Google Cloud Storageにローカルからファイル転送
gsutilを使う。
gsutilが入っていない人はインストールしてください。
gsutil config
とすると、こんな風に出る。
CommandException: OAuth2 is the preferred authentication mechanism with the Cloud SDK.
Run "gcloud auth login" to configure authentication, unless:
- You don't want gsutil to use OAuth2 credentials from the Cloud SDK,
but instead want to manage credentials with .boto files generated by
running "gsutil config"; in which case run "gcloud config set
pass_credentials_to_gsutil false".
- You want to authenticate with an HMAC access key and secret, in
which case run "gsutil config -a".
手っ取り早く認証したいなら、gcloudでログインしろと。そこで、
gcloud auth login
を実行するとURLが帰ってくるので、そのURLにブラウザからアクセスする。
ブラウザに認証コードが表示されるので、
Enter verification code:
の後にコピペ。すると、
WARNING: `gcloud auth login` no longer writes application default credentials.
If you need to use ADC, see:
gcloud auth application-default --help
You are now logged in as [kenji_oishi@cognivision.jp].
Your current project is [mymltest-195701]. You can change this setting by running:
$ gcloud config set project PROJECT_ID
と表示されるので、素直に
gcloud config set project (プロジェクトID)
を入力(プロジェクトID)には、GCPでstorageに紐づけたプロジェクトIDを入力した。
名前じゃなくてID。
Updated property [core/project].
と表示される。以降アクセスできる。
例えば、
gsutil cp C1* gs://trainimages/
とかやるとファイルをコピーできる。
ちなみに、同じファイル名をcpすると上書きされた。
Google Cloud Storageのバケット間でオブジェクトを移動
バケット間の移動は、
gsutil -m mv gs://trainimages/* gs://trainimages2/
とする。
Google Cloud Storageのバケット内のファイル数をカウント
ファイル数をカウントするには、
gsutil ls -l gs://trainimages2/ | wc -l
ができたよ。
どうやら、mvが途中で切れてて、44万枚ある転送ファイル数が9万枚しか転送されていませんでしたので、やりなおし(泣)