【问题标题】:Issue with aws cli with s3 sync not copying files from sub folder带有 s3 同步的 aws cli 问题没有从子文件夹复制文件
【发布时间】:2020-04-07 03:23:02
【问题描述】:

我有一个像这样的 S3 存储桶:

bucket_name/v1.0.0/file1.js
bucket_name/v1.0.0/file2.js
bucket_name/file3.js
bucket_name/file4.js

我正在尝试将文件从 v1.0.0 子目录复制到根目录或存储桶,并删除旧文件。

aws s3 sync s3://bucket_name/v1.0.0 s3://bucket_name/ --delete --exclude 'v*'

排除删除版本子目录,但由于某种原因,这只是从根/存储桶中删除 file3.js 和 file4.js,但它没有像我预期的那样同步 v1.0.0 子目录中的任何文件。

我期待结束:

bucket_name/v1.0.0/file1.js
bucket_name/v1.0.0/file2.js
bucket_name/file1.js
bucket_name/file2.js

【问题讨论】:

  • --delete 参数告诉它删除目标中不在源中的所有文件。鉴于您的要求,您应该使用--delete 参数。

标签: amazon-web-services amazon-s3


【解决方案1】:

您可以将v1.0.0 目录中的文件复制到根目录:

aws s3 sync s3://bucket_name/v1.0.0/ s3://bucket_name/

AWS CLI sync 命令将从不删除原始文件。 --delete 选项告诉它删除源中不存在的目标中的所有文件。例如,假设您每天运行一次sync,并且有人在白天从源中删除了一个文件。在这种情况下,同步过程也会从目标中删除文件。

如果你想移动对象,那么你可以使用:

aws s3 mv s3://bucket_name/v1.0.0/ s3://bucket_name/ --recursive

这将有效地复制对象,然后删除原始对象。

【讨论】:

  • 我遇到的问题是,仅同步 sourcefolder 目标文件夹不会删除目标文件夹中预先存在的 .js 文件。我希望删除它们,但不希望删除 v1.0.0 目录。 mv 命令的问题在于它将它们从 v1.0.0 目录中删除。所以这些都不是很好。问题是,我不知道为什么他们不工作。我想到了一个解决方法,使用 2 个命令来删除所有文件然后同步,所以不必担心使用同步命令删除东西。感谢您的帮助:)
【解决方案2】:

我遇到过类似的问题,后来发现 S3 中的文件夹后面有一个空格,导致文件无法复制

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2019-10-19
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多