将文件从 Mac (iCloud) 保存到 S3 存储桶 (AWS) 的脚本
Posted
技术标签:
【中文标题】将文件从 Mac (iCloud) 保存到 S3 存储桶 (AWS) 的脚本【英文标题】:Script to save files from Mac (iCloud) to S3 bucket (AWS) 【发布时间】:2020-10-24 02:27:23 【问题描述】:所以我想首先我们需要编写一个脚本来保存我的 iCloud 中的所有文件,我想我们必须为此进行 API 调用?然后将这些文件备份到我的 aws S3 存储桶中。那么下一个问题是,我是否必须手动运行脚本,或者我们可以自动运行脚本以每小时运行一次。
谢谢!
【问题讨论】:
Amazon S3 无法“拉取”内容,因此您需要一个在“某处”运行的脚本,该脚本将从 iCloud 检索内容并上传到 S3。您可以使用AWS Command-Line Interface (CLI)aws s3 sync
命令。但是,您能否编辑您的问题 来告诉我们更多关于您的实际用例的信息?例如:文件是在 Mac 上,还是在 iCloud 中。它如何知道要复制哪些 文件?您希望多久同步一次文件? 为什么您要同步文件 - 用于处理,还是仅用于备份?为什么不直接使用 Dropbox?请提供更多信息!
【参考方案1】:
如果不介意的话,可以用python脚本来做ff的组合:
pyicloud
- 与您的 iCloud 服务交互并在本地下载您的文件。
from pyicloud import PyiCloudService
api = PyiCloudService('jappleseed@apple.com', 'password')
# Some more setup if you have two-factor (or two-step) authentication
api.files.dir()
# Download the files you want locally, you can also open up a file stream if needed
boto3
- 与您的 AWS 账户中配置的 S3 服务交互并将文件上传(或备份)到您的存储桶。
import boto3
client = boto3.client(
's3',
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY')
)
# Loop over your local files to back them up to S3
response = client.upload_file(local_filename, bucket_name, s3_filename)
-
最后,您可以设置一些
cron job
来安排您的脚本每天运行,如果您想成为管理脚本运行的盒子的人。这里的另一种选择是构建一个更加云原生的解决方案,即将你的整个 python 代码放在 Lambda function
上,这将由 CloudWatch event
触发,每天都会安排。
【讨论】:
以上是关于将文件从 Mac (iCloud) 保存到 S3 存储桶 (AWS) 的脚本的主要内容,如果未能解决你的问题,请参考以下文章