🎉

gsutil -mで problems with multiprocessing on MacOSが発生した時の解決方法

2021/02/07に公開

問題

Cloud StorageはConsoleからだと1オブジェクトのみしか、ダウンロードできないため、
フォルダをダウンロードするには、gsutil コマンドラインを使用する必要がありました。

コマンドが記載があったので、コピペして実行すると下記エラーが発生し、ダウンロードできませんでした。

$ gsutil -m cp -r "gs://firebase-tutorial-suzuki.appspot.com/buckup-test/" .
If you experience problems with multiprocessing on MacOS, they might be related to https://bugs.python.org/issue33725. 
You can disable multiprocessing by editing your .boto config or by adding the following flag to your command: `-o "GSUtil:parallel_process_count=1"`.
Note that multithreading is still available even if you disable multiprocessing.

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H114

$ gcloud version
Google Cloud SDK 321.0.0
bq 2.0.64
core 2020.12.11
gsutil 4.57

$ gsutil version -l
gsutil version: 4.57
boto version: 2.49.0
python version: 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
OS: Darwin 19.6.0
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True

解決方法

gsutil cp -r gs://firebase-tutorial-suzuki.appspot.com/buckup-test . のコマンドでダウンロードできた。

※ commandにオプションを付けてねと書いてあったので、下記のようにしてみましたがこれではダウンロードできませんでした。
gsutil -o "GSUtil:parallel_process_count=1" -m cp -r "gs://firebase-tutorial-suzuki.appspot.com/buckup-test/" .

終わり

-m は並列実行するoptionのようですがエラーになる根本の理由までは調べきれていません。

https://cloud.google.com/storage/docs/gsutil/addlhelp/TopLevelCommandLineOptions?hl=ja

Discussion