我理解 rsync 的工作原理,但有两个方面。S3 没有守护进程,虽然有,但基本上只是 HTTP。
看上去有几种方法。
s3rsync(但这只是将 rsync 连接到 s3)。很简单。我不确定是否要依赖第三方。我希望 s3 支持 rsync。
还有一些 rsync “克隆”,比如 duplicity,声称无需上述附加组件即可支持 s3。但它如何做到这一点?它们是否在本地保存索引文件?我不确定这样做如何能提高效率。
我显然想使用 s3,因为它便宜又可靠,但 rsync 也可以用于某些事情,例如备份巨大的图像目录。
这里有什么选择?使用 duplicity + s3 而不是 rsync + s3rsync + s3 会有什么损失?
答案1
答案2
这s3cmd 工具有一个很好的sync
选择。我用它来同步本地备份,使用如下命令:
s3cmd sync --skip-existing $BACKUPDIR/weekly/ s3://MYBACKUP/backup/mysql/
这--skip-existing
意味着它不会尝试对现有文件进行校验和比较。如果已经有一个同名文件,它会快速跳过它并继续。还有一个--delete-removed
选项可以删除本地不存在的文件,但我想保留在 S3 上,即使是那些我已经在本地清理过的文件,所以我不使用它。
答案3
您也可以使用 minio 客户端麦克使用‘mc mirror’命令就可以完成这个工作。
$ mc mirror share/sharegain/ s3/MyS3Bucket/share/sharegain
- mc: minio客户端
- share/sharegain:本地目录
- s3:别名https://s3.amazonaws.com
- MyS3Bucket:我的远程 S3 存储桶
- share/sharegain:我在 s3 上的对象
您可以编写一个简单的脚本作为 cronjob,它将定期保持同步。
希望能帮助到你。
答案4
S3 是一个通用对象存储系统,它为您提供了足够的灵活性来设计如何使用它。
从您的问题来看,我不确定您遇到的是 rsync 的问题(索引除外)还是“第三方”工具的问题。
如果您拥有大量结构良好的文件,则可以在子文件夹上运行多个 s3 同步。
亚马逊的工作人员还允许您从便携式硬盘导入/导出大文件到 S3 或 EBS——http://aws.amazon.com/importexport/您可以将其用于第一次上传。
请参阅此处的 Amazon s3 最佳实践——http://aws.amazon.com/articles/1904
至于不同的工具,请尝试一下,看看哪种最适合您。至于定价,如果适合您的需求,可以降低冗余定价——http://aws.amazon.com/s3/pricing/
一般建议——拥有快速的多核 CPU 和良好的网络管道。
更新:提及 S3 上的校验和
关于 S3,S3 将数据存储在键值对中,没有目录的概念。S3sync 验证校验和(S3 有一种机制可以将校验和作为标头发送以进行验证 - Content-MD5 标头)。最佳实践链接数据完整性部分对此进行了详细介绍。S3 允许您发送/验证和检索校验和。有很多人使用 duplicity 进行增量备份。即使 S3 上没有运行 rsync,您也可以像我在此处提到的那样进行校验和。
rsync 是一种经过验证的工具,并且大多数现代工具都使用相同的算法或 rsync 库或从外部调用 rsync。