4

devと展開ボックスをGCSバケットと同期させて、問題なく2年間近く保管するために、gsutil -m rsync -rを使用しました。バケツには約85k個のオブジェクトがあります。gsutil rsyncがすべてのファイルを再ダウンロードするのはなぜですか?

最近まで、これは完全に機能しました:私たちは、15分ごとにデプロイメントボックス - > GCS rsyncを実行して、新しいアップロードされたリソースをすべてバックアップしておきたいときはいつでもGCS - >ローカルのdevデータ(OSX El Capitan上で実行中)を更新します。

しかし、GCS-> dev rsyncが膨らみ始め、ますます多くの画像がダウンロードされています。

当初私は「すばらしい、より多くのリソースをアップロードしています」と思っていましたが、今日まで85k画像全体をダウンロードしているように見えるまで、データよりも速く成長しています。

私は正しい場所にあり、コマンドが正しいこと、パスが正しいことなどを再確認しました。gsutilの出力は、「コピー中...」のリームとスラムでスクロールしています。と "ダウンロード中..."というメッセージが表示され、私たちの100mbps接続をうまく利用すると、別の端末に行ってfind . -type f | wc -lを10秒ごとに実行すると、わずか2または3の新しいファイルが1分で追加されていることがわかります。私はgsutilが今すぐダウンロードしていると言っているファイルの変更時刻を見ています。大部分は古いものですが、1年以上で多くは変更されていません。意味:それは数百のファイルのために、時間と帯域幅のトンを使用して、すべてのデータをダウンロードしています。

最近のOSX gsutilのバージョンで何か変更されましたか?おそらくバグはありますか?どのように私はこのことを追跡しようとするだろうか?それとも報告しますか? gsutil-discussgs-discussionのニュースグループがアーカイブされてお​​り、gce-discussionのトークはすべてGCEインスタンスのgsutilを使用しています。

ありがとうございます!

+0

gsutil 4.20(2016-07-20)では、sync'ingの変更検出アルゴリズムが、ファイルサイズのみを使用することから、ローカルファイルのサイズとファイル変更時間を比較するように変更されました。デベロッパーボックスのファイル変更時間と展開ボックスのファイル変更時間は異なりますか?もしそうなら、それはこの問題を説明するかもしれない。 –

+0

ねえ、助けてくれてありがとうトラビス!私はそれがほぼ確実に答えだと思う。私たちは227日前に新しい展開ボックスのインスタンスを作成し、すべてのファイルをrsyncしたところ、 'find。初期の同期がGCSの元のタイムスタンプではなくrsyncされた瞬間としてすべての変更時刻を書き込んだことを示しています。私たちがこれについて何かできることはありますか?それ以外に、devからのたくさんのものを削除し、それらをre-rsyncしますか?とにかく、 'gsutil'は何をすべきでしょうか? (これを答えに入れたいのであれば、私はそれを受け入れてそこにコメントとしてフォローアップを依頼することができます:-)) –

+0

問題は、内容が変更されていないファイルがdev'boxにsync'edされていることです? deploy - > GCSからrsyncを実行するときに、展開ボックスのファイルのmtimeを変更していますか?私は、GCS - > devからの同期は、mtimesが違う場合は一度ファイルをコピーすることを期待しますが、その後の同期は増分になります。しかし、異なるファイルmtimesを持つ新しい展開ボックスを作成してアップロードした場合、すべてのファイルが変更されたために表示され、別の「フル同期」がdevボックスまで発生します。 –

答えて

1

gsutil 4.20(リリース済み2016-07-20)は、rsyncのchange detection algorithmを変更しました。ローカルファイルのサイズとクラウドファイルのサイズだけを比較するのではなく、ローカルファイルのサイズとファイルの変更時間を比較するようになりました。 rsyncを使用してファイルをアップロードすると、そのファイルのカスタムユーザメタデータにファイルの変更時刻が格納されます。それが存在しない場合は、オブジェクト作成時間が使用されます。

+0

クラウドからローカルのrsyncに対して、ファイルmtimeメタデータが存在しない場合、チェックサムの代わりにオブジェクトの作成時間が使用されます。 –

2

同じファイルが何度も何度も同期されているのと同じ問題がありました。私は多くのファイルがないので、パフォーマンスをチェックする必要があるかもしれませんが、-cオプションを使用して、ビルドプロセスでローカルに変更されたmtimeの代わりにチェックサムを強制的に使用することにしました。 私は(と希望)ドキュメントが として送信元と送信先の大きさだけでなく、ファイルのmtimeマッチ

場合はそれもチェックサムを使用しているようだとして

は、ファイルのためのチェックサムを比較することを知らせる少し間違っていると思いますmtimeが一致しない場合

+1

ローカルファイルは常に更新されていましたが、変更はありませんでした。 -cオプションは私のために働いていました...元の同期動作に戻るために。はるかに高速。ありがとうございました! – Robert

+0

ありがとう、 '-c'は大いに役立ちます。また、コンパイルされた 'crcmod'もインストールしてください:https://cloud.google.com/storage/docs/gsutil/addlhelp/CRC32CandInstallingcrcmod –

関連する問題