如何快速更新AWS S3上的本地硬盘备份 解决aws s3 sync校验耗时问题
原生aws s3 sync速度优化方案(零代码改动即可生效)
默认aws s3 sync会全量遍历本地所有文件+拉取S3全量对象列表,对比文件大小、最后修改时间两个维度,4TB数据如果包含大量小文件,光是元数据遍历校验就会消耗数天时间,可通过调整参数快速提效:
- 新增
--size-only参数:绝大多数备份场景下,文件大小没有变动即可判定文件未修改,跳过修改时间对比步骤,能减少70%以上的元数据校验开销 - 新增
--exclude参数过滤无用文件:排除.DS_Store、Thumbs.db、临时缓存文件、系统日志文件等不需要备份的内容,直接降低需要遍历的文件总量 - 调整并发请求参数:新增
--max-concurrent-requests 20,默认并发是10,可根据本地带宽、CPU性能调整到15-30区间,加快S3元数据拉取速度 - 如果本地存储是机械硬盘,可提前将备份目录的元数据缓存到SSD,避免每次sync都从头扫描机械盘的全量文件列表
替代sync的高效增量备份方案
如果调整参数后仍达不到预期效率,可替换为更适合大体积冷备份的工具:
- 用
rclone sync替代aws cli原生sync:rclone自带增量校验缓存,第一次全量扫描完成后,后续同步仅需要对比本地文件系统的变更和缓存的S3元数据,不需要每次全量拉取S3对象列表,4TB数据日常无变动的情况下通常几分钟就能跑完校验 - 本地部署AWS DataSync代理:DataSync会自动识别磁盘块级变更,仅同步变动的数据块,不需要做文件级全量校验,备份性能比原生s3 sync高10倍以上,适合超大容量的定期备份场景
- 开启本地文件系统变更日志:Windows下启用NTFS USN日志、Linux下用inotify/fanotify监控备份目录,自己写简单脚本统计每日新增/修改/删除的文件,仅同步这部分变动文件到S3,完全跳过全量遍历步骤,适合备份目录结构固定的场景
注意:如果备份场景要求100%准确性,不能仅靠文件大小判断变更,可以每周跑一次全量带哈希校验的同步(比如加
--checksum参数),其余日常同步用上述增量方案,兼顾效率和可靠性
内容的提问来源于stack exchange,提问作者keabraekman
相关产品推荐
相关产品推荐

