AWSマネジメントコンソールからS3バケット全体をダウンロードすることはできないようです。
私のバケツの1つにすべてをつかむ簡単な方法はありますか?私はルートフォルダをパブリックにし、wget
を使ってそれをすべてプライベートにすることを考えていましたが、もっと簡単な方法があるかどうかわかりません。
AWSは最近、コマンドラインツールをリリースしました。これはbotoのように機能し、Sudo easy_install awscli
またはSudo pip install awscli
を使ってインストールすることができます。
インストールが完了したら、次のように実行するだけです。
Command:
aws s3 sync s3://mybucket .
出力:
download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt
これにより、すべてのファイルがダウンロードされます(一方向同期)。現在のディレクトリ内の既存のファイルをnot削除し( --delete を指定しない限り)、S3上のファイルを変更または削除することはありません。
S3バケットからS3バケット、またはローカルからS3バケットへの同期も可能です。
ドキュメントと他の例をチェックしてください。
http://docs.aws.Amazon.com/cli/latest/reference/s3/sync.html
私はs3cmdを含め、Amazon S3データをローカルマシンにコピーするためにいくつかの異なる方法を使用しましたが、最も簡単な方法は Cyberduck です。あなたがする必要があるのはあなたのAmazon資格情報を入力してあなたのバケツ/フォルダー/ファイルのいずれかをダウンロード/アップロード/同期するために単純なインターフェースを使うことだけです。
これを行うには基本的に多くのオプションがありますが、最良の方法はAWS CLIを使用することです
これがチュートリアルです。
お使いのマシンにAWS CLIをダウンロードしてインストールします
MSIインストーラーを使用してAWS CLIをインストールする(Windows)
バンドルインストーラを使用してAWS CLIをインストールする(Linux、OS X、またはUnix)
AWS CLIを設定する
アカウント作成時に受け取った有効なアクセスキーと秘密キーを必ず入力してください
次のコマンドでs3バケットを同期する
aws s3 sync s3://yourbucket /local/path
上記のコマンドを次のデータに置き換えます。
yourbucket >>ダウンロードしたいs3バケット
/ local/path >>すべてのファイルをダウンロードしたいローカルシステムのパス
お役に立てれば!
AWS S3 CLIを使用してダウンロードするには:
aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive
コードを使用してダウンロードするには、 AWS SDK を使用します。
GUIを使用してダウンロードするには、 Cyberduck を使用します。
それが役に立てば幸い.. :)
S3ブラウザは私が見つけた最も簡単な方法です。それは優秀なソフトウェアです...そしてそれは非商業的使用のために無料です。 Windowsのみ.
Visual Studioを使用している場合は、 http://aws.Amazon.com/visualstudio/ をダウンロードしてください。
インストール後、[Visual Studio] - [AWS Explorer] - [S3] - [Your bucket]に移動し、[ダブルクリック]をクリックします。
ウィンドウで、あなたはすべてのファイルを選択することができるでしょう。ファイルを右クリックしてダウンロードします。
osxユーザー 、を助けることができるもう一つのオプションは transmit です。それはまたあなたのs3ファイルに接続することを可能にするftpプログラムです。そしてそれは フォルダとしてのftpまたはs3ストレージをマウントするオプションを持っています Finderに。しかし、それは限られた期間だけのためのものです。
私はs3のために少し開発をしました、そして、私はバケツ全体をダウンロードする簡単な方法を見つけませんでした。 Javaでコーディングしたい場合は、jets3t libを使用してバケットのリストを作成し、そのリストを反復処理してダウンロードします。
http://jets3t.s3.amazonaws.com/downloads.html
最初にAWS管理領事館から公開秘密鍵セットを取得して、S3serviceオブジェクトを作成できるようにします。
AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);
それからあなたのバケツオブジェクトの配列を取得してください...
S3Object[] objects = s3Service.listObjects(YourBucketNameString);
最後に、このコードを使用してオブジェクトを一度に1つずつダウンロードするためにその配列を反復処理します。
S3Object obj = s3Service.getObject(bucket, fileName);
file = obj.getDataInputStream();
接続コードをスレッドセーフなシングルトンに入れました。明白な理由で必要なtry/catch構文は省略されています。
Pythonでコードを書くのであれば、代わりにBotoを使うことができます。
PS BucketExplorerを見回した後に私はあなたが欲しいものをやる。 https://forums.aws.Amazon.com/thread.jspa?messageID=248429
AWS CLI :でこのコマンドを使用します。
aws s3 cp s3://bucketname. --recursive
@Laykeによる回答は良いですが、大量のデータがあり、永遠に待ちたくない場合は、 この記事をよく読んでください。並列化 。次のコマンド100,000ジョブをジョブ(各小ファイルやマルチコピーの一部)を実行し、先読みする千個のスレッドを使用するAWS CLIを教えてくれます。
aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000
次のようにこれらを実行した後、簡単なsyncコマンドを使用することができます。
aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path
または
aws s3 sync s3://source-bucket/source-path c:\my\local\data\path
CPU 4コアと16ギガバイトのRAMを搭載したシステムでは、鉱山(3〜50ギガバイトのファイル)のような例の同期/コピー速度は、700 +のMIB /秒程度9.5MiB/sからデフォルトの設定を超える70Xの高速化を行ってきました。
あなたがS3FoxでFirefoxを使うならば、それはあなたがすべてのファイルを選択することを可能にし(shift-select firstとlast)そしてすべてを右クリックしてダウンロードします。
そこにファイルしかない(サブディレクトリがない)場合は、すべてのファイル(最初はclick
、最後はShift+click
)を選択し、Enter
またはright click
を押してOpen
を選択します。ほとんどのデータファイルでは、これはあなたのコンピュータに直接それらをダウンロードするでしょう。
別のGUIオプションを追加するには、 WinSCPのS3機能 を使用します。接続は非常に簡単で、UIにアクセスキーと秘密キーだけが必要です。その後、入れ子になったフォルダの再帰的なダウンロードなど、アクセス可能な任意のバケットから必要なファイルを参照してダウンロードできます。
セキュリティを介して新しいソフトウェアをクリアするのは難しいことであり、WinSCPはかなり普及しているので、より専門的なユーティリティをインストールしようとするよりも単にそれを使用することが本当に有益な場合があります。
https://github.com/minio/mc :でこれを実行できます。
mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir
mCはまた、セッション、再開可能なダウンロード、アップロードなどをサポートしています。 mc
は、Linux、OS X、およびWindowsオペレーティングシステムをサポートしています。 Golangで書かれ、Apacheバージョン2.0の下でリリースされました。
Windowsの場合、私がこれに推奨するGUIツールはCloudberry Explorer for S3です。 http://www.cloudberrylab.com/free-Amazon-s3-Explorer-cloudfront-IAM.aspx 。かなり洗練されたファイルエクスプローラ、FTPのようなインターフェイスを持っています。
AWS sdk APIは、フォルダ全体をアップロードしてs3にリポジトリし、s3のバケット全体をローカルにダウンロードする場合にのみ最適なオプションです。
S3にフォルダ全体をアップロードするため
aws s3 sync . s3://BucketName
ローカル全体のダウンロード
aws s3 sync s3://BucketName .
ダウンロードするs3の特定のフォルダのBucketName/Pathのようにパスを割り当てることもできます。
s3cmd commandで簡単に入手できます。
s3cmd get --recursive --continue s3://test-bucket local-directory/
aws syncは完璧な解決策です。双方向ではありません..送信元から送信先への一方通行です。また、バケツの中にたくさんのアイテムがある場合は、ダウンロードが速くなるように(ダウンロードはインターネット経由ではなくイントラネット経由で行われるため)s3エンドポイントを最初に作成することをお勧めします。
AWSからバケットをダウンロードするだけの場合は、まずAWS CLIをマシンにインストールします。ターミナルでファイルをダウンロードしたい場所にディレクトリを変更して、このコマンドを実行します。
aws s3 sync s3://bucket-name .
ローカルディレクトリとs3ディレクトリの両方も同期したい場合(ローカルフォルダにファイルを追加した場合)、次のコマンドを実行してください。
aws s3 sync . s3://bucket-name
これはすべてのバケツをダウンロードし、それらをリストし、それらの内容をリストするためのものです。
//connection string
private static void dBConnection() {
app.setAwsCredentials(CONST.getAccessKey(), CONST.getSecretKey());
conn = new AmazonS3Client(app.getAwsCredentials());
app.setListOfBuckets(conn.listBuckets());
System.out.println(CONST.getConnectionSuccessfullMessage());
}
private static void downloadBucket() {
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
app.setBucketKey(objectSummary.getKey());
app.setBucketName(objectSummary.getBucketName());
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
//DOWNLOAD
try
{
s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
s3Client.getObject(
new GetObjectRequest(app.getBucketName(),app.getBucketKey()),
new File(app.getDownloadedBucket())
);
} catch (IOException e) {
e.printStackTrace();
}
do
{
if(app.getBackUpExist() == true){
System.out.println("Converting back up file");
app.setCurrentPacsId(objectSummary.getKey());
passIn = app.getDataBaseFile();
CONVERT= new DataConversion(passIn);
System.out.println(CONST.getFileDownloadedMessage());
}
}
while(app.getObjectExist()==true);
if(app.getObjectExist()== false)
{
app.setNoObjectFound(true);
}
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
}
/ ----------------------------拡張メソッド----------------- -------------------- /
//Unzip bucket after download
public static void unzipBucket() throws IOException {
unzip = new UnZipBuckets();
unzip.unZipIt(app.getDownloadedBucket());
System.out.println(CONST.getFileUnzippedMessage());
}
//list all S3 buckets
public static void listAllBuckets(){
for (Bucket bucket : app.getListOfBuckets()) {
String bucketName = bucket.getName();
System.out.println(bucketName + "\t" + StringUtils.fromDate(bucket.getCreationDate()));
}
}
//Get the contents from the auto back up bucket
public static void listAllBucketContents(){
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
System.out.println(objectSummary.getKey() + "\t" + objectSummary.getSize() + "\t" + StringUtils.fromDate(objectSummary.getLastModified()));
app.setBackUpCount(app.getBackUpCount() + 1);
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
System.out.println("There are a total of : " + app.getBackUpCount() + " buckets.");
}
}
Windowsユーザーは、このリンクからS3Explorerをダウンロードする必要があります。インストール手順も記載されています。 - http://s3browser.com/download.aspx
次に、秘密鍵、アクセスキー、地域などのAWS認証情報をs3Explorerに提供します。このリンクには、s3Explorerの設定手順が記載されています。
今あなたのすべてのs3バケツはs3Explorerの左パネルに見えるでしょう。
単にバケツを選択して、左上隅のバケツメニューをクリックしてから、メニューからすべてのファイルをダウンロードするオプションを選択してください。以下は同じスクリーンショットです。
次にフォルダを参照して特定の場所にあるバケットをダウンロードします。
[OK]をクリックするとダウンロードが始まります。
Neel Bhaatがこの{ blog で説明したように、この目的のために使用できるさまざまなツールがあります。 AWSが提供するものもありますが、そのほとんどはサードパーティ製のツールです。これらすべてのツールでは、AWSアカウントのキーと秘密をツール自体に保存する必要があります。第三者のツールを使用する場合は、慎重に使用してください。保存した認証情報には費用がかかり、その分だけ価値が失われる可能性があります。
そのため、この目的には常に AWS CLI を使用することをお勧めします。あなたは単に this link からこれをインストールすることができます。次に、次のコマンドを実行して、キー、シークレットの値をAWS CLIに保存します。
aws configure
また、次のコマンドを使用してAWS S3 Bucketをローカルコンピューターに同期します。 (ローカルマシンにAWS CLIがインストールされている必要があります)
aws s3 sync <source> <destination>
例:
1)AWS S3からローカルストレージへ
aws s3 sync <S3Uri> <LocalPath>
2)ローカルストレージからAWS S3へ
aws s3 sync <LocalPath> <S3Uri>
3)AWS s3バケットから別のバケットへ
aws s3 sync <S3Uri> <S3Uri>
このコマンドを試してください。
aws s3 sync yourBucketnameDirectory yourLocalDirectory
たとえば、バケット名がmyBucket
、ローカルディレクトリがc:\local
の場合、次のようになります。
aws s3 sync s3://myBucket c:\local
Awscliの詳細については、 aws cliのインストールを確認してください
私のコメントは本当に新しい解決策を追加するものではありません。ここで多くの人が言ったように、aws s3 sync
は最高です。しかし強力なオプションを誰も指摘していませんでした:dryrun
。このオプションはsync
を使用しているときにs3から/ s3にダウンロード/アップロードされるものを見ることを可能にします。あなたがあなたのローカルでもs 3バケットでもコンテンツを上書きしたくないとき、これは本当に役に立ちます。これはどのように使われるかです:
aws s3 sync <source> <destination> --dryrun
望ましくない変更をアップロードしないようにするために、新しいコンテンツをバケットにプッシュする前は常に使用していました。
バケットが非常に大きい場合は、並列接続を作成してダウンロード時間を短縮するs4cmd
というコマンドがあります。
ようにDebianにインストールするには
apt install s4cmd
ピップがある場合:
pip install s4cmd
~/.s3cfg
ファイルが存在する場合はそれを読み取り(s3cmd
をインストールしてs3cmd --configure
を実行しない場合)、コマンドで--access-key=ACCESS_KEY --secret-key=SECRET_KEY
を指定できます。
Cliはs3cmd
に似ています。あなたの場合、ファイルを再ダウンロードせずにダウンロードをキャンセルして再起動できるので、sync
をお勧めします。
s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir
大量のデータ(> 1TB)をダウンロードする場合は、これが請求に影響する可能性があることに注意してください。最初に計算します。これがコストになります
@laykeが言ったように、それは安全で安全なS3 cliからファイルをダウンロードすることがベストプラクティスです。しかし、場合によっては、人々はファイルをダウンロードするためにwgetを使用する必要があり、これが解決策です。
aws s3 presign s3://<your_bucket_name/>
これによりpresign_urlを使用してS3からコンテンツをダウンロードするために使用できる一時的な公開URLがあなたの場合はwgetまたは他のダウンロードクライアントを使用して取得できます。
このAWS cliコマンドを使用して、S3バケットのコンテンツ全体をローカルフォルダーにダウンロードできます。
aws s3 sync s3://your-bucket-name "Local Folder Path"
このようなエラーが表示される場合
fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
--no-verify-ssl(ブール値)
デフォルトでは、AWS CLIはAWSサービスと通信するときにSSLを使用します。 SSL接続ごとに、AWS CLIはSSL証明書を検証します。このオプションは、SSL証明書を検証するデフォルトの動作を上書きします。 参照
このタグをコマンドで使用します--no-verify-ssl
aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl
AWS CLIは、S3バケット全体をローカルにダウンロードするための最良の選択肢です。
インストール AWS CLI。
設定 デフォルトのセキュリティ認証情報とデフォルトのAWSリージョンを使用するためのAWS CLI。
S3バケット全体をダウンロードするには、commandを使用します。
aws s3 sync s3:// yourbucketname localpath
さまざまなAWSサービスにAWS cliを使用するための参照: https://docs.aws.Amazon.com/cli/latest/reference/