aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"
如果 .DS_Store 以某种方式进入 AWS S3 mybigbucket(来自以前的备份),则使用上述命令不会从目标中删除 .DS_Store 文件,即使我手动执行以下操作:
rm /WordProcessing/DOCUMENTS/.DS_Store
在文件服务器上。
我是否忽略了 aws s3 sync 的工作逻辑?在我看来,如果 .DS_Store 已从文件服务器上的源中删除,则应该从 S3 存储桶上的目标中删除它。
如果我取消 --exclude 并再次运行该命令,它会在已从文件服务器中删除 .DS_Store 后将其从目标中删除。这似乎不对。
我采取的方法是否错误?我想要做的是每晚同步文件服务器,并且不让它将数千个 .DS_Store 文件传输到 S3 存储桶。
答案1
看起来您在第一次同步后更改了参数。
当您使用时,--exclude
它会从与指定模式匹配的命令中排除所有文件或对象。如果匹配,它将忽略该模式的任何操作。
如果文件 (.DS_Store) 已经位于 s3 bucket 中并且选项--exclude
与之匹配,它将忽略它。无论它是否已更改或从数据源中消失。
你可以做:
- 在第一次和所有后续同步中使用 --exclude (这会使文件从一开始就远离 s3)
- 首先从本地主机删除文件,同步,然后放入排除(如果文件在 s3 中,这将删除该文件,然后阻止它被添加)
- 输入 --exclude 并手动从 s3 中删除该文件(这将阻止该文件重新添加到 s3)
参考