将文件从 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) 的脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用终端默认情况下阻止Mac应用保存到iCloud

将 GPX 文件保存到 iCloud

从 iCloud 打开 txt 文件

iOS:以编程方式阻止 iCloud 备份

在 XCode 之外测试 iCloud:签名无效

如何将 AVCaptureMovieFileOutput 保存到 iCloud