web-dev-qa-db-ja.com

Googleクラウドバケットデータをローカルコンピューターにコピーするときに「一致するURLがありません」というエラーが表示されますか?

Google Cloud Bucket内にあるfolderをダウンロードしようとしていますが、google docs gsutil/commands/cp から読み取り、行の下で実行しました。

gsutil cp -r appengine.googleapis.com gs:// my-bucket

しかし、私はerrorを取得しています

CommandException:一致するURLがありません:appengine.googleapis.com

編集

以下のコマンドを実行する

gsutil cp -r gs:// logsnotimelimit。

エラーが発生します

IOError:[Errno 22]無効なモード( 'ab')またはファイル名:u '。\ logsnotimelimit\appengine.googleapis.com\nginx.request\2018\03\14\14:00:00_14:59:59_S0.json_。 gstmp '

6
Sudhanshu Gaur

コマンドのappengine.googleapis.comパラメーターは何ですか?これは、クラウドバケットにコピーしようとしているファイルシステム上のローカルディレクトリですか?

指定したgsutil cp -r appengine.googleapis.com gs://my-bucketコマンドは、appengine.googleapis.comという名前のローカルディレクトリをmy-bucketという名前のクラウドバケットに再帰的にコピーします。それがあなたがしていることではない場合-あなたはあなたのコマンドを異なって構築する必要があります。

つまりfolderという名前のディレクトリをmy-bucketという名前のクラウドバケットから現在の場所にダウンロードするには、gsutil cp -r gs://my-bucket/folder .を実行してみてください

--更新:Windowsマシンを使用しているように見えるため(エラーメッセージの「\」ではなく「/」ディレクトリ区切り文字)、ファイル名には「:」文字が含まれています。表示されているエラーメッセージが表示されたファイルを作成すると、cpコマンドが失敗します。

7
Mihail Russu

Windowsでこの問題が発生した場合に、人々を支援したかっただけです。管理者として:

  • C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\utilsを開きます
  • 削除copy_helper.pyc
  • copy_helper.pyの権限を変更して、書き込みを許可します
  • copy_helper.pyを開きます
  • 関数_GetDownloadFileに移動します
  • 2312行目(執筆時点)で、次の行を変更します
download_file_name = _GetDownloadTempFileName(dst_url)

to(たとえば、目的はコロンを削除することです):

download_file_name = _GetDownloadTempFileName(dst_url).replace(':', '-')
  • 関数_ValidateAndCompleteDownloadに移動します
  • 3184行目(執筆時点)で、次の行を変更します
final_file_name = dst_url.object_name

to(たとえば、目的はコロンを削除することです):

final_file_name = dst_url.object_name.replace(':', '-')
  • ファイルを保存し、gsutilコマンドを再実行します
  • 参考までに、コマンドgsutil -m cp -r gs://my-bucket/* .を使用して、すべてのログをダウンロードしていました。ログには、デフォルトで:が含まれていますが、これはWindowsファイルの前兆ではありません。

これが誰かに役立つことを願っています。これはややハッキーな解決策だと思いますが、Windowsファイル名にコロンは必要ない(必要ない)ので、忘れても問題ありません。 Google SDKを更新する場合は、これをやり直す必要があることを覚えておいてください。

0
Eugene