AWS S3 Sync与Linux cp、rsync文件夹复制行为差异咨询
AWS S3 Sync 行为疑问与解决
这是有意设计吗?
是的,aws s3 sync的行为是有意设计的。它的逻辑更贴近rsync的特定用法:当源路径以/结尾时,仅同步该路径下的内容,而非包含源文件夹本身。
这种设计和S3的对象存储特性有关——S3没有真正的目录结构,所谓“文件夹”只是通过对象键的前缀模拟出来的。aws s3 sync的设计偏向于精准控制同步的内容范围,避免自动添加不必要的前缀层级。
如何让行为与Linux命令一致?
如果想实现类似cp -r ./test1/ test2/的效果(把test1文件夹整体放入目标位置,即内容存放在s3://mybucket/test1/),有两种方式:
方式1:去掉源路径结尾的/
直接执行以下命令,和cp -r ./test1 test2/的行为完全一致:
aws s3 sync ./test1 s3://mybucket/
执行后,S3桶内会自动创建test1前缀(模拟文件夹),并将本地test1下的所有内容同步到s3://mybucket/test1/路径下。
方式2:明确指定目标前缀
如果源路径必须带/,可以直接在S3目标路径中指定test1前缀:
aws s3 sync ./test1/ s3://mybucket/test1/
这种方式更直观,直接定义了内容在S3中的存放路径,避免歧义。
内容的提问来源于stack exchange,提问作者Kevin Vasko
相关产品推荐
相关产品推荐

