如何使用AWS CLI在中断后恢复S3批量下载并跳过已下载文件
操作方法
将原下载命令中的cp子命令替换为sync即可。AWS CLI的s3 sync指令会自动比对本地目标文件夹与S3路径下的文件,自动跳过大小、属性完全匹配的已下载文件,仅拉取未完成的剩余内容,不会重复下载已完成的文件。
直接执行以下命令:
aws s3 sync s3://raster/COP30/ . --endpoint-url https://opentopography.s3.sdsc.edu --no-sign-request
适配不稳定网络的优化配置
如果频繁遇到网络断连,担心本地存在下载到一半的残缺文件,可以追加校验参数,强制比对文件校验和,只要内容不匹配就自动重下,避免数据集缺漏:
aws s3 sync s3://raster/COP30/ . --endpoint-url https://opentopography.s3.sdsc.edu --no-sign-request --checksum-mode ENABLED
低带宽场景下如果经常触发连接中断,可以适当调低并发请求数,降低连接被限流重置的概率,例如将并发请求数设置为5:
aws s3 sync s3://raster/COP30/ . --endpoint-url https://opentopography.s3.sdsc.edu --no-sign-request --checksum-mode ENABLED --max-concurrent-requests 5
避坑提示
- 不要使用
aws s3 cp搭配--no-clobber参数实现跳过逻辑:该参数仅校验文件名是否存在,会把断连产生的半下载残缺文件判定为已完成直接跳过,最终导致文件损坏、数据集不完整。 aws s3 sync默认递归遍历路径下所有子目录和文件,不需要额外添加--recursive参数,手动加上也不会影响正常执行。- 常规场景下,sync默认的「文件大小+最后修改时间」双维度比对准确率足够,不需要额外开启校验和也能正确识别已完成的文件。
内容的提问来源于stack exchange,提问作者piyush
相关产品推荐
相关产品推荐

