25

ローカルディレクトリをGoogleCloudStorageのバケットに同期したい。リモートとローカルの両方にすでに存在するファイルをスキップして、リモートに存在しないローカルファイルをコピーしたいと思います。これはGSUtilでこれを行うことは可能ですか?GSUtilの「同期」オプションまたは「上書きしない」オプションが見つからないようです。これをスクリプト化することは可能ですか?

Linux(Ubuntu 12.04)を使用していますか?

4

3 に答える 3

32

gsutilは、cpコマンドでnoclobberフラグ(-n)をサポートするようになりました。gsutilを最新バージョンに更新し(gsutil updateを使用)、コピーを実行するときに-nフラグを使用します。

このフラグは、宛先にすでに存在するファイルをスキップします。

于 2012-12-16T09:38:12.333 に答える
16

コマンドに(-n)を追加する必要があります。これは、GoogleCloudPlatformで公式に言及されています

-n:クローバーなし。指定すると、宛先にある既存のファイルまたはオブジェクトは上書きされません。このオプションでスキップされたアイテムは、スキップされたものとして報告されます。このオプションは、データのアップロードを試みる前に、アイテムが存在するかどうかを確認するために追加のGETリクエストを実行します。これにより、データの再送信を節約できますが、HTTPリクエストを追加すると、小さなオブジェクトの転送が遅くなり、コストが高くなる可能性があります。

例(マルチスレッドを使用):

gsutil -m cp -n -a public-read -R large_folder gs://bucket_name
于 2015-06-24T07:05:20.997 に答える
10

rsyncを使用して、欠落している/変更されたファイル/オブジェクトをコピーできます。

gsutil -m rsync -r <local_folderpath> gs://<bucket_id>/<cloud_folderpath>

さらに、この-dオプションを使用すると、ローカルに存在しなくなったバケット内のファイル/オブジェクトも削除されます。

別のオプションとして、オブジェクトのバージョン管理を使用することもできます。これにより、バケット内のファイル/オブジェクトをローカルデータに置き換えますが、いつでも以前のバージョンに戻すことができます。

于 2017-11-28T04:44:10.250 に答える