web-dev-qa-db-ja.com

コマンドラインを使用してAmazon ec2からs3バケットにファイルを移動する方法

Amazon EC2インスタンスには、uploadsという名前のフォルダーがあります。このフォルダーには、1000個の画像があります。次に、すべての画像を新しいS3バケットにコピーします。これどうやってするの?

22
Pacts Ramun

最初のオプションsm3cmd

つかいます s3cmd

s3cmd get s3://AWS_S3_Bucket/dir/file

このs3cmdドキュメント をご覧ください

linuxを使用している場合は、コマンドラインで次を実行します。

Sudo apt-get install s3cmd

またはCentos、Fedore。

yum install s3cmd

使用例:

s3cmd put my.file s3://pactsRamun/folderExample/fileExample

2番目のオプション

Cli from Amazon を使用する

更新

コメントで@ tedder42が言ったように、cpを使用する代わりに、syncを使用します。

次の構文を見てください。

aws s3 sync <source> <target> [--options]

例:

aws s3 sync . s3://my-bucket/MyFolder

AWSコマンドラインインターフェイスでの高レベルs3コマンドを使用したオブジェクトの管理 で利用可能な詳細情報と例

28
Ethaan
aws s3 sync your-dir-name s3://your-s3-bucket-name/folder-name
  • 重要:これにより、名前付きディレクトリ内の各アイテムが、選択したs3バケットフォルダーにコピーされます。これはディレクトリ全体をコピーしません。

または、選択した1つのファイルに対して次のコマンドを使用できます。

aws s3 sync your-dir-name/file-name s3://your-s3-bucket-name/folder-name/file-name

または、ワイルド文字を使用してすべてを選択できます。これにより、ディレクトリ全体がコピーされ、メタデータが生成され、s3バケットフォルダーに保存されます。

aws s3 sync . s3://your-s3-bucket-name/folder-name
6
zafrin

また、s3と同期するaws cliでは、マルチスレッドであり、ファイルの複数の部分を一度にアップロードします。ただし、スレッドの数は、現時点では構成できません。

2
Tim Johnson
aws s3 mv /home/inbound/ s3://test/ --recursive --region us-west-2
1
raju

テスト用に利用可能なドライラン機能があります。

  • まず、ec2-instanceにロールを割り当てて、S3に読み書きできるようにします
  • インスタンスにSSHで接続し、次を実行します
  • vi tmp1.txt
  • aws s3 mv ./ s3://bucketname-bucketurl.com/ --dryrun
  • これが機能する場合、あなたがしなければならないことは、このフォルダからs3バケットに特定のすべてのファイルをアップロードするスクリプトを作成することです
  • 現在のディレクトリからバケット/フォルダに2分以上前のファイルを移動するために、スクリプトで次のコマンドを作成しました
  • cd dir; ls -rt | xargs -Iファイル検索ファイル-maxdepth 1 -name '* .txt' -mmin +2 -exec aws s3 mv '{}' s3://bucketurl.com
0
AKV