使用 aws clisync 包含和排除删除选项

Edw*_*118 1 amazon-s3 aws-cli

aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"
Run Code Online (Sandbox Code Playgroud)

如果 .DS_Store 以某种方式到达 AWS S3 mybigbucket(从之前的备份),则使用上述命令不会从目标中删除 .DS_Store 文件,即使我手动执行:

rm /WordProcessing/DOCUMENTS/.DS_Store
Run Code Online (Sandbox Code Playgroud)

在文件服务器上。

我是否缺少 aws s3 同步工作原理的逻辑?在我看来,如果 .DS_Store 已从文件服务器上的源中删除,则应该从 S3 存储桶上的目标中删除它。

如果我取消 --exclude 并再次运行该命令,当 .DS_Store 从文件服务器中删除时,它会从目标中删除它。这似乎不对。

我采取了错误的方法吗?我想要做的是每晚同步文件服务器,并让它不将数千个 .DS_Store 文件传输到 S3 存储桶。

ken*_*kas 5

您似乎在第一次同步后更改了参数。

当您使用时,--exclude它会从与指定模式匹配的命令中排除所有文件或对象。如果匹配,它将忽略该模式的任何操作。

如果文件 (.DS_Store) 已位于 s3 存储桶中并且选项--exclude与其匹配,则它将忽略它。它是否已更改或从数据源中消失。

你可以做:

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

参考

AWS cli - 同步