2

Python 2.7.6 を使用して、Windows サーバー 2008 R2 上の Windows CMD スクリプトから GSUTIL v3.42 を実行しています。アップロードするファイルは「送信」ディレクトリに到着し、GSUTIL によって並行して「受信」バケットにアップロードされます。スクリプトは、アップロードの完了後に「着信」バケットのリストを要求し、アップロードの失敗を検出するために、リストされたファイルとアップロードしようとしたファイルを比較します。その後、別の別のスクリプトがファイルを「受信」バケットから「処理済み」バケットに移動します。

同じファイル (同じ名前/サイズ/コンテンツ/日付など) をもう一度アップロードしようとすると、アップロードされませんが、エラーは発生せず、ログに失敗を示すものは何もありません。私は「no clobber」オプションを使用していないので、gsutil はファイルをアップロードするだけだと思います。

以下のシナリオでは、ファイルが正常にアップロードされ、その日にすでに「処理済み」バケットに移動されていると想定しています。タイミングが重要な場合、2 回目のアップロードは最初のアップロードから 30 分以内に試行されます。

  1. ファイル A は「発信」ディレクトリに到着します。
  2. 「送信」のファイル リストを取得し、これを dirListing.txt に書き込みます。
  3. を使用して GSUTIL アップロードを実行します

    タイプdirListing.txt | python gsutil -m cp -I -L myGsutilLogFile.txt gs://myIncomingBucket

  4. 次に、GSUTIL リストを実行します。

    python gsutil ls -l -h gs://myIncomingBucket > bucketListing.txt

  5. ファイルが一致する dirListing.txt と bucketListing.txt を使用して、不一致を検出し、アップロードの失敗を検出します。

2 回目の実行では、ファイル A は手順 3 でアップロードされていないため、手順 4 で返されず、手順 5 で不一致が発生します。 .txt で、bucketListing.txt にはありません]

ファイルを「受信」バケットから「処理済み」バケットに移動する別のスクリプトが何らかの理由で失敗した場合、または本来の処理を実行しない場合に備えて、ファイルを再処理する機能が必要です。通常、実行ごとに数百のファイルがあるため、並行してアップロードする必要があります。

上記で説明したことは、GSUTIL の予想される動作ですか? (これを示唆するドキュメントは見たことがありません) もしそうなら、GSUTIL に強制的にアップロードを再試行させる方法はありますか? それとも、明らかな何かが欠けていますか?GSUTIL からのデバッグ出力が必要/役に立つ場合があります。

4

1 に答える 1