如何通过 aws cli 在 Amazon s3 中重命名“PREFIX”?

ayj*_*jay 6 command-line-interface amazon-s3 amazon-web-services

我知道在 Amazon s3 中,只有 buckets 和 objects。没有文件夹和所有文件都在同一个存储桶中这样的东西,并且看起来在文件夹中的对象只有在它们的文件名前面有一个前缀。

现在我的问题是……有没有办法使用 AWS CLI 更改 PREFIX?

小智 7

在 awscli2 中,我能够使用以下命令完成此操作:

aws s3 mv --recursive s3://bucket/prefix1/ s3://bucket/prefix2/
Run Code Online (Sandbox Code Playgroud)

在执行此操作之前,我通过检查以下输出进行了快速测试(dryrun):

aws s3 --dryrun mv --recursive s3://bucket/prefix1/ s3://bucket/prefix2/
Run Code Online (Sandbox Code Playgroud)


小智 1

是的,但并不容易。请记住,“前缀”只是文件名的一部分,更改前缀将要求您重命名其中包含该前缀的每个文件 \xe2\x80\x94 例如,如果您的存储桶包含以下文件,并且您想重命名/oldprefix//newprefix/

\n\n
/oldprefix/file1.txt\n/oldprefix/file2.txt\n/oldprefix/folder/anotherfile.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

您需要执行三个*操作来完成前缀的更改:每个对象一个。无法通过一次操作将它们全部重命名。一般来说,您应该尽量避免需要进行大规模重命名的情况,因为这可能是一个相当漫长的过程。

\n\n

*:如果你想挑剔的话,实际上需要的不是三个而是六个操作,因为重命名对象分两步完成,首先将其复制到新名称,然后删除原始名称。不过,许多 S3 客户端和库都会为您处理这个细节。

\n