【发布时间】:2021-11-27 18:29:05
【问题描述】:
目前,我在 S3 存储桶的一个文件夹中有 3000 万个文件 我想将 750 万个文件从其中移动到 S3 存储桶中的 4 个文件夹中
我尝试使用 AWS CLI 命令,但不知道如何提及其中的文件数
aws s3 mv s3://BUCKETNAME/myfolder/ s3://BUCKETNAME/folder1/ --recursive
如何循环并仅将 750 万个文件移动到每个文件夹中?
import boto3
aws_access_key_id = ""
aws_secret_access_key = ""
bucket_from = ""
bucket_to = ""
s3 = boto3.resource(
's3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key
)
src = s3.Bucket(bucket_from)
def move_files():
for archive in src.objects.all():
s3.meta.client.copy_object(
ACL='public-read',
Bucket=bucket_to,
CopySource={'Bucket': bucket_from, 'Key': archive.key},
Key=archive.key
)
move_files()
【问题讨论】:
-
明确地说,您希望增加命令行输出的详细程度,以便显示移动的文件总数?
-
不,我想使用 aws cli 或 python 以自动方式将拆分的 3000 万个文件分成 7.5 个文件到每个文件夹中
-
您需要单独“移动”每个文件。或者,编写一个程序(例如在 Python 中),通过将文件复制到新密钥然后删除原始文件来“移动”文件。
-
@JohnRotenstein 是的,但我想弄清楚如何在 python 中只移动 7.5 个文件
标签: python amazon-web-services amazon-s3 aws-cli