Aws-cli: --no-overwriteオプションをawss3cp/mvに追加します

作成日 2017年10月06日  ·  43コメント  ·  ソース: aws/aws-cli

aws s3 cp/mvコマンド用の便利な関数--no-overwriteがあると便利です。この関数は、ファイルをs3バケットに入れる前に、ターゲットの宛先がまだ存在していないことを確認します。

もちろん、このロジックはAWS API(afaik ...)によって保証できず、競合状態などに対して脆弱です。ただし、意図しないミスを防ぐのに役立ちます。

feature-request s3

最も参考になるコメント

コミュニティのフィードバックに基づいて、機能リクエストをGitHubの問題に返すことにしました。

全てのコメント43件

機能リクエストとしてマークします。 cpまたはmvで実行した場合の注意点は、CLIがS3にクエリを実行して、ファイルをアップロードする前にファイルが存在するかどうかを確認する必要がある場合があることです。 したがって、すでに追加しているので、 syncに追加する方が理にかなっている場合があります。

これをcpおよび/またはmvでも見たいです。

現在、これにsyncを使用しない理由は、ターゲットディレクトリの下に宛先バケットに多数の既存のファイルがある場合、 syncに大きなパフォーマンスの問題があるためです。

aws s3 cp --recursive newdir s3://bucket/parentdir/を実行すると、実際にコピーしている各ファイルにのみアクセスします。

aws s3 sync newdir s3://bucket/parentdir/を実行すると、コピーしているファイルにアクセスするだけでなく、 s3://bucket/parentdir内のファイルのリスト全体(すでに数千または数百万のファイルが含まれている可能性があります)を調べ、既存の各ファイルのメタデータを取得します。

十分に大きい宛先バケットでは、 aws s3 cp --recursiveは数秒かかり、 aws s3 syncは同じデータをコピーするのに数時間かかる場合があります。

明らかにsyncを修正するのは良いことですが、「ファイルがすでに存在するかどうかを確認する」クエリをcpに追加する場合は、 syncコードを次のように修正するよりも扱いにくい問題です。速くするなら、代わりにそれをするのが理にかなっているかもしれません。

この機能にも非常に興味があります。 ファイルを上書きするためのオプションのインタラクティブプロンプトも用意しておくと便利です。

はい@sgrimm-sg、それは理にかなっています。 また、これらの条件を実際に処理できるCLIcpコマンドにも興味があります。

これがaws s3 syncのオプションであると非常に便利です。 rsyncには、この機能が--ignore-existingとして利用可能です。 rsyncにすでに精通している人がたくさんいると思うので、私の好みはrsyncと同じオプション名を使用することです。

おはようございます!

AWS CLIに関連する機能リクエストのUserVoiceへの移行の一環として、この問題をGitHubでクローズします。

これにより、バグレポートで会話を薄めることなく、最も重要な機能の検索とサポートの表示が簡単になり、最も重要な機能を利用できるようになります。

簡単なUserVoice入門書として(まだなじみがない場合):アイデアが投稿された後、人々はアイデアに投票することができ、製品チームは最も人気のある提案に直接応答します。

GitHubから既存の機能リクエストをインポートしました-この問題をそこで検索してください!

そして心配しないでください、この問題は後世のためにGitHubにまだ存在します。 元の投稿をUserVoiceにテキストのみでインポートするため、GitHubの問題に関してすでにここに存在するコメントとディスカッションを引き続き念頭に置いておく必要があります。

GitHubは、バグを報告するためのチャネルであり続けます。

繰り返しになりますが、この問題は、 https ://aws.uservoice.com/forums/598381-aws-command-line-interfaceでタイトルを検索することで見つけることができます。

-AWS SDK&Toolsチーム

このエントリは、UserVoiceのhttps://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3-にあります。

関連している:

コミュニティのフィードバックに基づいて、機能リクエストをGitHubの問題に返すことにしました。

@jameslsそれは素晴らしいです! 手元の提案に答えていただけますか? --no-overwriteは素晴らしい追加であり、スクリプトで呼び出しをラップすることを回避します

この問題に+1します。 既存のLinuxcpコマンドオプションと一致するように-n、-no-clobberを提案します。

このリクエストの実装はありましたか? Windowsバッチファイルを使用してローカルバックアップ>S3を実行しようとすると、これが最も簡単な方法であり、単純な上書き禁止または同様のフラグです。

この機能に関する更新はありますか?

この機能に関する更新はありますか? ありがとう

この機能に関する更新はありますか?

この機能に関する更新はありますか?

sev3、+ 1

S3同期はすべてのファイルをアップロードするわけではないようであるため、この機能を追加する必要があります。

更新または回避策はありますか?

更新または回避策はありますか?

バケット内のすべてのアイテムを配列(リスト)にロードし、同期するディレクトリからすべてのアイテムをロードし、配列を比較して、S3配列にないローカルアイテムをアップロードするPythonスクリプトを作成する必要がありました。

バケット内のすべてのアイテムを配列(リスト)にロードし、同期するディレクトリからすべてのアイテムをロードし、配列を比較して、S3配列にないローカルアイテムをアップロードするPythonスクリプトを作成する必要がありました。

@southpaw5271-スクリプトを共有して時間を節約してください。 ; )。

バケット内のすべてのアイテムを配列(リスト)にロードし、同期するディレクトリからすべてのアイテムをロードし、配列を比較して、S3配列にないローカルアイテムをアップロードするPythonスクリプトを作成する必要がありました。

@southpaw5271-スクリプトを共有して時間を節約してください。 ; )。

もう持っていないようです:(ごめんなさい!

syncでは宛先名の変更中にファイルをコピーできないため、このフラグはcpコマンドにも役立ちます。

aws s3 cp --no-overwrite ./somefile s3://bucket/othername

また、s3からlocalへの--no-overwriteオプションも必要です。 私たちは善意のある個人からの偶発的な上書きによって火傷を負いました、そしてこれは彼らのために「ガードレール」を設置するための非常にありがたい方法でしょう。 ありがとう!

すべてのアップデート?

この機能に関する更新はありますか? ありがとう

+1

+1

古いシステムからファイルを移行しています。 私はdb列に従って異なるパスを生成するPythonスクリプトを持っているので(つまり、各組織は特定のバケットに独自のフォルダーを持っています)、syncコマンドに頼ることはできません。 -skip-duplicateまたはある種のパラメーターが使用可能な場合は、スクリプトを実行して部分的な移行を行うことができます。

+1

これはひどく必要です。 なぜまだそこにないのですか?

+1

+10

この機能に関する更新はありますか? ありがとう

また、この機能に投票してください!

+1

+1

+1

+ + 1

これに関する更新はありますか?

+1

それがまだ問題ではないなんて信じられません。 S3で不変のストレージを作成することはほぼ不可能です:(

S3バケットからローカルのLinuxマウントにコピーされたデータを開始しました。宛先のサイズは、S3バケットよりも約40GB小さくなっています。 不足しているものだけをコピーする方法を見つけてください。 すべてをコピーする代わりにそれを行う簡単な方法はないようです。

同様のことを達成する可能性のあるaws s3 syncの1つのオプションは、 --size-onlyブールフラグです。これは、ソースオブジェクトと宛先オブジェクトの間でサイズが異なる場合にのみ宛先でオーバーライドされます。

 --size-only (boolean) Makes the size of each key the only criteria used
       to decide whether to sync from source to destination.

私が使用したコマンド、

aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only 

_重要_:最初に--dry-runブールフラグを指定して上記のコマンドを実行することを強くお勧めします。特に実稼働システムに関係する場合は、実際に実行する前にこのコマンドの目的を確認してください。 これは十分な注意が必要です。

DHが#5456に対応するのを待っているので助けにはなりません

このページは役に立ちましたか?
0 / 5 - 0 評価