2023-05-14
Google Cloud Storageは、Google Cloud Platform(Amazon AWSのGoogle版)で提供される機能のひとつで、ファイル/フォルダをオンラインに保存して安全性を保つ又は公開する目的で使われる。
GmailアカウントでGoogle Cloud Platform/Storage利用開始の契約をして、Linux/DebianにGoogle提供のツールをインストールして操作する。
https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu?hl=ja
Google Cloud SDKツールのインストール
sudo -s export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - apt-key list apt-get update apt-get install google-cloud-sdk exit
aptパッケージリストにgoogle-cloud-sdkを加えインストール。
Google Cloud Platformにログイン
一般ユーザーに戻って、
gcloud init
・ログインするかどうか聞かれるのでYとする。
・認証URLが出るのでブラウザで開き、Cloud Storageを契約しているgmailアカウントを選択。
・求めているアクセスをすべて許可にすると、認証コードが出るので、コンソールに貼り付ける。
・コンソール側で今度は連携アカウント選択が出るので契約しているものを選んで完了。
あとは基本的にgsutilコマンドで操作する。
https://cloud.google.com/storage/docs/gsutil?hl=ja
gsutil help # コマンド一覧表示 gsutil help options # オプション一覧表示 gsutil help cp # cpコマンドのヘルプ
新規バケットの作成
gsutil ls # バケット一覧確認 gsutil mb gs://my-expp-test-bk/ Creating gs://my-expp-test-bk/... gsutil ls gs://my-expp-test-bk/
ファイルのアップロード
cat > とっぷ.txt ああああ Ctrl+D gsutil -m cp とっぷ.txt gs://my-expp-test-bk/ Copying file://とっぷ.txt [Content-Type=text/plain]... / [1/1 files][ 10.0 B/ 10.0 B] 100% Done Operation completed over 1 objects/10.0 B. gsutil ls gs://my-expp-test-bk/ gs://my-expp-test-bk/とっぷ.txt
フォルダのアップロード
mkdir さぶふぉるだ cat さぶふぉるだ/さぶ.txt いいいい Ctrl+D gsutil -m cp -r さぶふぉるだ gs://my-expp-test-bk/ Copying file://さぶふぉるだ/さぶ.txt [Content-Type=text/plain]... / [1/1 files][ 13.0 B/ 13.0 B] 100% Done Operation completed over 1 objects/13.0 B. gsutil ls gs://my-expp-test-bk/さぶふぉるだ/ gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt
ファイルのダウンロード
gsutil -m cp gs://my-expp-test-bk/とっぷ.txt . Copying gs://my-expp-test-bk/とっぷ.txt... / [1/1 files][ 10.0 B/ 10.0 B] 100% Done Operation completed over 1 objects/10.0 B.
フォルダのダウンロード
gsutil -m cp -r gs://my-expp-test-bk/さぶふぉるだ . Copying gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt... / [1/1 files][ 13.0 B/ 13.0 B] 100% Done Operation completed over 1 objects/13.0 B.
フォルダのダウンロード(rsync同期)
mkdir downloads cd downloads gsutil -m rsync -r -d gs://my-expp-test-bk/ . Building synchronization state... Starting synchronization... Copying gs://my-expp-test-bk/とっぷ.txt... Copying gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt... - [2/2 files][ 23.0 B/ 23.0 B] 100% Done Operation completed over 2 objects/23.0 B. gsutil -m rsync -r -d gs://my-expp-test-bk/ . Building synchronization state... Starting synchronization...
変更のあったファイル/フォルダのみをダウンロードする場合上記rsyncを使う。
ただし変更してもファイルサイズが同じ場合変更と見なされずダウンロードされない(しょぼい)。
-d オプションはrsyncの--deleteと同じで、保存先にしか無いファイル/フォルダは消える(完全同期)ので注意。
ファイルの一般公開
gsutil acl ch -u AllUsers:R gs://my-expp-test-bk/とっぷ.txt Updated ACL on gs://my-expp-test-bk/とっぷ.txt
https://storage.googleapis.com/my-expp-test-bk/とっぷ.txt
で、誰からでも見れるようになる=公開。
ファイルの一般公開取り消し
gsutil acl ch -d AllUsers gs://my-expp-test-bk/とっぷ.txt Updated ACL on gs://my-expp-test-bk/とっぷ.txt
フォルダ内ファイルの一括公開
gsutil acl ch -r -u AllUsers:R gs://my-expp-test-bk/さぶふぉるだ Updated ACL on gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt
あくまでファイルの公開なので、フォルダのみの公開とアクセスはできない。
https://storage.googleapis.com/my-expp-test-bk/さぶふぉるだ/さぶ.txt
はアクセスできるが、
https://storage.googleapis.com/my-expp-test-bk/さぶふぉるだ
はAccess Denied。
フォルダ内ファイルの一括公開取り消し
gsutil acl ch -r -d AllUsers gs://my-expp-test-bk/さぶふぉるだ Updated ACL on gs://my-expp-test-bk/さぶふぉるだ/てすと.txt
バケット全体の一般公開
gsutil iam ch allUsers:objectViewer gs://my-expp-test-bk/
バケット内のすべてのファイル・フォルダが公開される。この場合、
https://storage.googleapis.com/my-expp-test-bk/
で、バケットインデックスもXMLで見れるようになる。
バケット全体の一般公開取り消し
gsutil iam ch -d allUsers:objectViewer gs://my-expp-test-bk/
ファイルの削除
gsutil -m rm gs://my-expp-test-bk/とっぷ.txt Removing gs://my-expp-test-bk/とっぷ.txt... / [1/1 objects] 100% Done Operation completed over 1 objects.
フォルダの削除
gsutil -m rm -r gs://my-expp-test-bk/さぶふぉるだ/ Removing gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt#1589440437050895... / [1/1 objects] 100% Done Operation completed over 1 objects.
バケットの削除
gsutil rm -r gs://my-expp-test-bk/ Removing gs://my-expp-test-bk/とっぷ.txt#1589441826032912... Removing gs://my-expp-test-bk/さぶふぉるだ/#1589444483605840... Removing gs://my-expp-test-bk/さぶふぉるだ/さぶ.txt#1589441825715129... / [3 objects] Operation completed over 3 objects. Removing gs://my-expp-test-bk/...
ファイルシステムとしてマウントする
※面倒なわりに問題が多く正直おすすめできません※
追加ツールが必要。
gcloud auth application-default login
アカウントを間違えないようにして選択認証
gcloud auth application-default print-access-token
gcsfuseインストール
sudo -s cd /etc/apt/sources.list.d export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - apt update apt install gcsfuse exit
一般ユーザに戻ってログイン/認証
gcloud auth login 認証以下略
マウント用ディレクトリ作成
sudo -s cd /home mkdir gcs chown hogeuser:hogegroup gcs # 一般ユーザ用にする exit
一般ユーザに戻ってマウント
cd /home/gcs mkdir my-expp-test-bk gcsfuse my-expp-test-bk /home/gcs/my-expp-test-bk Using mount point: /home/gcs/my-expp-test-bk Opening GCS connection... Opening bucket... Mounting file system... File system has been successfully mounted.
確認
ls -alF /home/gcs/my-expp-test-bk total 1 -rw-r--r-- 1 hogeuser hogegroup 10 May 14 16:14 とっぷ.txt
あるはずの「さぶふぉるだ」が無い。
調べたところCloud Storageはオブジェクトとキーのみでディレクトリの概念が無いとかなんとか理由が出るが、要はバグではないか。実際見えてないんだから。
自分でディレクトリを作ると、見れるようになる。
cd /home/gcs/my-expp-test-bk mkdir さぶふぉるだ ls -alF total 1 drwxr-xr-x 1 hogeuser hogegroup 0 May 14 17:21 さぶふぉるだ/ -rw-r--r-- 1 hogeuser hogegroup 10 May 14 16:14 とっぷ.txt ls -alF さぶふぉるだ total 1 -rw-r--r-- 1 hogeuser hogegroup 13 May 14 16:13 さぶ.txt
面倒すぎる!ミスのもとです。
なので、マウント時、--implicit-dirsオプションをつけると、最初から見れるらしいが、、
gcsfuse --implicit-dirs my-expp-test-bk /home/gcs/my-expp-test-bk ls -alF total 1 drwxr-xr-x 1 hogeuser hogegroup 0 May 14 17:21 さぶふぉるだ/ -rw-r--r-- 1 hogeuser hogegroup 10 May 14 16:14 とっぷ.txt
確かに見えてますが、そのかわりすべての操作が滅茶苦茶重い、使い物にならない。
さっさとアンマウントして、gsutilのみを使いましょう。
アンマウント
fusermount -u /home/gcs/my-expp-test-bk
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【Apache】サーバーに同時接続可能なクライアント数を調整する
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
Windows版Google Driveが使用中と言われアンインストールできない場合
【Linux】iconv/libiconvをソースコードからインストール
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【PHP】Mail/mimeDecodeを使ってメールの中身を解析(準備編)
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合