Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在同一Amazon S3存储桶中复制文件_Python_Amazon Web Services_Amazon S3_Boto_S3cmd - Fatal编程技术网

Python 在同一Amazon S3存储桶中复制文件

Python 在同一Amazon S3存储桶中复制文件,python,amazon-web-services,amazon-s3,boto,s3cmd,Python,Amazon Web Services,Amazon S3,Boto,S3cmd,我正在尝试将bucket上的整个/contentstore/文件夹复制到带有时间戳的版本。基本上/contenstore/将被复制到/contentstore/20130729/ 我的整个脚本首先使用S3Mirror将我的生产S3存储桶克隆到备份。然后,我想将备份重命名为带时间戳的副本,这样我就可以保留同一备份的多个版本 我有一个使用s3cmd的工作版本,但它似乎需要异常长的时间。两个存储桶之间的s3s3mirror部分在几分钟内完成,可能是因为它是对现有文件夹的刷新。但是,即使是一个干净的S3

我正在尝试将bucket上的整个/contentstore/文件夹复制到带有时间戳的版本。基本上/contenstore/将被复制到/contentstore/20130729/

我的整个脚本首先使用S3Mirror将我的生产S3存储桶克隆到备份。然后,我想将备份重命名为带时间戳的副本,这样我就可以保留同一备份的多个版本

我有一个使用s3cmd的工作版本,但它似乎需要异常长的时间。两个存储桶之间的s3s3mirror部分在几分钟内完成,可能是因为它是对现有文件夹的刷新。但是,即使是一个干净的S3S3镜像,备份时也没有现有的contentstore,这也需要大约20分钟

另一方面,将conentstore复制到备份存储桶上的时间戳副本需要一个多小时10分钟

我做错什么了吗?同一个存储桶上的数据拷贝是否应该比两个不同存储桶之间的完整克隆花费更长的时间

任何想法都将不胜感激

注意:我正在运行的命令是s3cmd-recursive cp backupBucket/contentStore/backupBucket/20130729/

,因为源路径包含目标路径,所以实际上您可能多次复制内容—首先复制到目标路径,然后在目标路径与源前缀匹配时再次复制。这也解释了为什么复制到不同的bucket比在同一个bucket中要快


如果您使用的是s3s3mirror,那么使用-v选项,您将准确地看到复制的内容。它是否显示同一个密钥被多次复制?

您如何创建目录20130729?我实际上使用的是“s3cmd-recursive cp backupBucket/contentStore/backupBucket/20130729/”。这里的“backupBucket”是一个变量,设置为s3://bucketName。我是否应该以不同的方式创建bucket?我不确定这是否会加快它的速度,但您是否考虑过下载它们然后上传它们?该脚本不会是硬的。不幸的是,下载和上传不是一个选项。我是AWS的新手,但在两个不同的存储桶之间复制镜像文件比在同一个存储桶中复制镜像文件要快,这让我感到困惑。您是否考虑过迭代存储桶中所有内容的列表,然后一次复制一个?递归在内存中的开销更大,因为每个递归调用通常需要将内存地址推送到堆栈中,以便以后程序可以返回到该点。因此,在aws或您的计算机上,迭代每个文件而不是递归地访问它可能会更快、强度更低