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 '
コマンドの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
コマンドが失敗します。
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を更新する場合は、これをやり直す必要があることを覚えておいてください。