1. ホーム
  2. copy

s3cmdで、あるS3バケットから別のバケットにすべてのファイルをコピーすることは可能ですか?

2023-09-15 19:45:36

質問

私はs3cmdにかなり満足していますが、1つの問題があります。あるS3バケットから別のバケットにすべてのファイルをコピーする方法は?それは可能ですか?

EDIT: Pythonとbotoを使ってバケット間でファイルをコピーする方法を発見しました。

from boto.s3.connection import S3Connection

def copyBucket(srcBucketName, dstBucketName, maxKeys = 100):
  conn = S3Connection(awsAccessKey, awsSecretKey)

  srcBucket = conn.get_bucket(srcBucketName);
  dstBucket = conn.get_bucket(dstBucketName);

  resultMarker = ''
  while True:
    keys = srcBucket.get_all_keys(max_keys = maxKeys, marker = resultMarker)

    for k in keys:
      print 'Copying ' + k.key + ' from ' + srcBucketName + ' to ' + dstBucketName

      t0 = time.clock()
      dstBucket.copy_key(k.key, srcBucketName, k.key)
      print time.clock() - t0, ' seconds'

    if len(keys) < maxKeys:
      print 'Done'
      break

    resultMarker = keys[maxKeys - 1].key

同期はコピーと同じように簡単です。キーには、ETag、サイズ、および最終修正時刻のフィールドが用意されています。

多分これは他の人にも役立ちます。

どのように解決するのですか?

s3cmd sync s3://from/this/bucket/ s3://to/this/bucket/

利用可能なオプションについては $s3cmd --help