ローカルPCに保存された数万個のセンサデータファイルをGCP(Google Cloud Platform)にアップする必要があり、フォルダごとアップしようとしたらものすごく時間がかかりそうなので、zipにまとめてバケットにアップロードしてから、GCP上で解凍する方法を調べた結果をメモ。
まず、GCPの画面の右上の赤丸の部分をクリックして、Google Cloud Shellを起動する。
Google Cloud Shellが起動したら、コマンドラインでunzipをインストールする。
sudo apt install unzip
次にcloudストレージのバケットにアップしたzipファイルをcloud shellのローカルにコピー。
gsutil cp gs://my-bucket/sensorfile.zip .
zipファイルを解凍(dataフォルダを作ってその中に解凍)
unzip sensorfile.zip -d data
解凍したファイルをフォルダごとcloudストレージのバケットにコピー。
gsutil cp -r data gs://my-bucket
しようと思ったけど、これをすると、6時間たっても約2KB×1万ファイルぐらいしかコピーが終わっていなかったので、-mオプションを付けてやり直す。
gsutil -m cp -r data gs://my-bucket
これだと1時間弱で約2KB×約3万ファイルのコピーが終わった。
念のため、コピーしたファイル数を確認。このコマンドは数分かかった。
gsutil du gs://my-bucket/data | wc -l
参考にしたサイト:
https://www.sneppets.com/cloud/how-to-unzip-a-zip-file-from-terminal-google-cloud-shell/