Cloud Storageは、文書、画像、映像、ログなど様々な形式のオブジェクトを格納可能なGoogleの堅牢なストレージです。
本ページでは、Cloud Storage上のオブジェクトをコマンドラインで操作するツールgsutilのインストールと使い方を紹介します。
インストール
Googleの公式マニュアルページに従い、自身の環境に適したパッケージをダウンロードします。
(ここではMac用のパッケージを選択しています。)
ダウンロードしたファイルを解凍して、作成されたフォルダにあるスクリプトを実行します。
./google-cloud-sdk/install.sh
適宜「Y」や「N」を入力して進みます。
以下のコマンドで初期設定を行います。
./google-cloud-sdk/bin/gcloud init
ログインするかどうか尋ねられるので「Y」を押します。
ブラウザ上でGoogleアカウントにログインしてアクセスを許可します。
以下の画面で設定できた模様です。
アクセスするプロジェクトIDを指定します。
これで指定のプロジェクトにアクセスできる設定ができたようです。
使い方
gsutilを利用してCloud Storage上のオブジェクトを操作する基本的な方法を紹介します。
始めに、ターミナル ウィンドウを開きます。
バケットの情報を表示
トップレベルのバケットの一覧を表示します。
gsutil ls
実際にトップレベルのバケットを表示してみます。
$ gsutil ls
gs://eforexcel-sales/
バケットの中身のオブジェクトの一覧を表示することができます。
gsutil ls gs://[バケット名]
バケット「eforexcel-sales」指定して、中身を表示してみます。
$ gsutil ls gs://eforexcel-sales
gs://eforexcel-sales/SalesRecords_1000.csv
gs://eforexcel-sales/daily_sales/
gs://eforexcel-sales/images/
バケットの詳細情報を表示することができます。
gsutil ls -L -b gs://[バケット名]
バケット「eforexcel-sales」の詳細情報を表示してみます。
$ gsutil ls -L -b gs://eforexcel-sales/
gs://eforexcel-sales/ :
Storage class: STANDARD
Location type: region
Location constraint: ASIA-NORTHEAST1
Versioning enabled: None
Logging configuration: None
Website configuration: None
CORS configuration: None
Lifecycle configuration: None
Requester Pays enabled: None
Labels: None
Default KMS key: None
Time created: Sun, 19 Jun 2022 08:30:22 GMT
Time updated: Sun, 19 Jun 2022 08:30:22 GMT
Metageneration: 1
Bucket Policy Only enabled: True
Public access prevention: inherited
ACL: []
Default ACL: []
オブジェクトの詳細情報を表示することもできます。
gsutil ls -l gs://[バケット名]/<オブジェクト名>
Cloud Storage上のオブジェクト「kitten.png」の詳細情報を表示してみます。
$ gsutil ls -l gs://eforexcel-sales/images/kitten.png
55672 2022-06-19T08:33:39Z gs://eforexcel-sales/images/kitten.png
TOTAL: 1 objects, 55672 bytes (54.37 KiB)
バケットを作成
バケットを新たに作成することができます。
gsutil mb -c <ストレージクラス> -l <リージョン名> gs://[バケット名]/
(注)オプションを指定しないと、デフォルトでストレージクラスは「standard」、場所は「US」になります。
「tmk-test-bucket」という名称のバケットを新たに作成してみます。
$ gsutil mb -c standard -l asia-northeast1 gs://tmk-test-bucket/
Creating gs://tmk-test-bucket/...
作成するバケット名は、グローバルにユニークな名称にする必要があるようです。
すでに存在する名称を指定すると、警告が表示されて作成されません。
Creating gs://test-bucket/...
ServiceException: 409 A Cloud Storage bucket named 'test-bucket' already exists. Try another name. Bucket names must be globally unique across all Google Cloud projects, including those outside of your organization.
オブジェクトをアップロード
ローカルのオブジェクトファイルをCloud Storageにアップロードすることができます。
gsutil cp <オブジェクト名> gs://[バケット名]/
エクセルファイル「sample_union_sales_2017.xlsx」をバケット「tmk-test-bucket」にアップロードしてみます。
$ gsutil cp sample_union_sales_2017.xlsx gs://tmk-test-bucket/
Copying file://sample_union_sales_2017.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
/ [1 files][ 9.7 KiB/ 9.7 KiB]
Operation completed over 1 objects/9.7 KiB.
アスタリスクを利用して、複数のファイルも一度にアップロードすることもできます。
(注)比較的大量のオブジェクトをアップロードする場合には、オプション-mを利用すると高速処理できるようです。
$ gsutil -m cp sample_union_sales* gs://tmk-test-bucket/
Copying file://sample_union_sales_2017.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
Copying file://sample_union_sales_2018.pdf [Content-Type=application/pdf]...
Copying file://sample_union_sales_2018.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
Copying file://sample_union_sales_2019.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
- [4 files][ 69.5 KiB/ 69.5 KiB]
Copying file://sample_union_sales_2020.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
- [5 files][ 79.7 KiB/ 79.7 KiB]
Operation completed over 5 objects/79.7 KiB.
ディレクトリ毎アップロードすることもできます。
(注)ディレクトリの場合にはオプション-rを利用します。
$ gsutil -m cp -r BQdemo/ gs://tmk-test-bucket/
Copying file://BQdemo/daily_sales.csv [Content-Type=text/csv]...
Copying file://BQdemo/sales_20220604.csv [Content-Type=text/csv]...
Copying file://BQdemo/sales_20220605.csv [Content-Type=text/csv]...
Copying file://BQdemo/new_order.csv [Content-Type=text/csv]...
\ [4 files][ 2.1 KiB/ 2.1 KiB]
Copying file://BQdemo/sales_20220603.csv [Content-Type=text/csv]...
\ [5 files][ 2.2 KiB/ 2.2 KiB]
Operation completed over 5 objects/2.2 KiB.
オブジェクトをダウンロード
Cloud Storageからローカルにオブジェクトをダウンロードできます。
gsutil cp gs://[バケット名]/<オブジェクト名> <ディレクトリ>
Cloud Storage にある画像ファイル「kitten.png」をローカルのカレントディレクトリにダウンロードしてみます。
$ gsutil cp gs://eforexcel-sales/images/kitten.png .
Copying gs://eforexcel-sales/images/kitten.png...
/ [1/1 files][ 54.4 KiB/ 54.4 KiB] 100% Done
Operation completed over 1 objects/54.4 KiB.
ディレクトリ毎ダウンロードすることもできます。
(注)比較的大量のオブジェクトをアップロードする場合には、オプション-mを利用すると高速処理できるようです。ディレクトリの場合にはオプション-rを利用します。
$ gsutil -m cp -r gs://tmk-test-bucket/BQdemo /Users/xxxxx/workspace/試用゙データ/
Copying gs://tmk-test-bucket/BQdemo/daily_sales.csv...
Copying gs://tmk-test-bucket/BQdemo/new_order.csv...
Copying gs://tmk-test-bucket/BQdemo/sales_20220603.csv...
Copying gs://tmk-test-bucket/BQdemo/sales_20220604.csv...
Copying gs://tmk-test-bucket/BQdemo/sales_20220605.csv...
/ [5/5 files][ 2.2 KiB/ 2.2 KiB] 100% Done
Operation completed over 5 objects/2.2 KiB.
オブジェクト・バケットを削除
Cloud Storage上のオブジェクトを削除できます。
gsutil rm gs://[バケット名]/<オブジェクト名>
Cloud Storage上のpdfファイル「sample_union_sales_2018.pdf」を削除してみます。
$ gsutil rm gs://tmk-test-bucket/sample_union_sales_2018.pdf
Removing gs://tmk-test-bucket/sample_union_sales_2018.pdf... / [1 objects]
Operation completed over 1 objects.
バケットとその中のオブジェクトも含めて削除することもできます。
(注)オプション-rを利用します。
$ gsutil rm -r gs://tmk-test-bucket/BQdemo/
Removing gs://tmk-test-bucket/BQdemo/daily_sales.csv#1686885840139610...
Removing gs://tmk-test-bucket/BQdemo/new_order.csv#1686885840133949...
Removing gs://tmk-test-bucket/BQdemo/sales_20220603.csv#1686885840139915...
Removing gs://tmk-test-bucket/BQdemo/sales_20220604.csv#1686885840138778...
/ [4 objects]
Removing gs://tmk-test-bucket/BQdemo/sales_20220605.csv#1686885840133642...
/ [5 objects]
Operation completed over 5 objects.
本ページでは、Cloud Storage上のオブジェクトをコマンドラインで操作するツールgsutilのインストールと基本的な使い方を紹介しました。