使用 aws cli sync 包含和排除删除选项

使用 aws cli sync 包含和排除删除选项
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与之匹配,它将忽略它。无论它是否已更改或从数据源中消失。

你可以做:

  1. 在第一次和所有后续同步中使用 --exclude (这会使文件从一开始就远离 s3)
  2. 首先从本地主机删除文件,同步,然后放入排除(如果文件在 s3 中,这将删除该文件,然后阻止它被添加)
  3. 输入 --exclude 并手动从 s3 中删除该文件(这将阻止该文件重新添加到 s3)

参考

AWS CLI-同步

相关内容