Google Storage 介紹

因緣際會之下開始使用 Google Storage 的服務,所以想說要用一篇文章記錄,由於 Google Cloud 的服務五花八門非常多樣化,所以這邊主要會專注在介紹 Google Storage,包含安裝與一些簡單的操作。

首先是要安裝 Google cloud SDK (gcloud):參考連結
  • 安裝在 Mac 環境:
wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-314.0.0-darwin-x86_64.tar.gz
tar -zxvf google-cloud-sdk-314.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh
  • 安裝在 Ubuntu 環境:
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get install apt-transport-https ca-certificates gnupg
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk 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 --keyring /usr/share/keyrings/cloud.google.gpg  add - && apt-get update -y && apt-get install google-cloud-sdk -y
初始化與帳號登入
  • Mac 初始化
./google-cloud-sdk/bin/gcloud init
  • Ubuntu 初始化
gcloud init

備註:安裝完之後可以使用以下要介紹的 gsutil 

Gsutil

Gsutil 讓使用者可以直接對雲端的 Google Storage Bucket 做存取,是一個很實用的雲端存儲,安裝的方式如下,由於 Gsutil 是屬於 Google cloud 的其中一個服務,所以安裝完 GCloud 就會有 Gsutil 在其中了!以下列出幾個 gsutil 常用的指令:

gsutil mv gs://<bucket_name> 
gsutil cp gs://<bucket_name>
gsutil du -s gs://<bucket_name> 
gsutil ls gs://gnomad-public/release 
gs://gnomad-public/release/ 
gs://gnomad-public/release/2.0.1/ 
gs://gnomad-public/release/2.0.2/ 
gs://gnomad-public/release/2.1.1/ 
gs://gnomad-public/release/2.1/ 
gs://gnomad-public/release/3.0.1/ 
gs://gnomad-public/release/3.0/

如果要下載整個 gsbucket 上的資料夾的話,可以利用以下指令將 google bucket 的檔案下載到本地。

gsutil -m cp -R gs://<bucket_name> .

-m 是啟動多執行緒下載的參數。

如何造訪 Requestor Pays ? 參考連結

一般在針對公開的 google bucket 執行以上提到的 gsutil 指令的時候,基本上都沒有太多問題,但是有一些 google bucket 並不是免費可以取得的,此時在執行 gsutil 的時候就會得到以下的錯誤訊息:

gsutil ls gs://hail-datasets-us/
BadRequestException: 400 Bucket is requester pays bucket but no user project provided.

主要的原因是因為 gs://hail-datasets-us 是一個使用者付費的雲端上空間,所以此時要提供 google project 帳號 ID 才可以成功對資料做存儲,可以利用以下的方式做進一步的資料處理:

gsutil -u PROJECT_ID mv gs://bucket-name
gsutil -u PROJECT_ID cp gs://bucket-name
gsutil -u PROJECT_ID du -s gs://bucket-name
gsutil -u PROJECT_ID ls gs://hail-datasets-us/
gs://hail-datasets-us/1000_Genomes_autosomes.phase_3.GRCh37.mt/
gs://hail-datasets-us/1000_Genomes_autosomes.phase_3.GRCh38.mt/
gs://hail-datasets-us/1000_Genomes_chrMT.phase_3.GRCh37.mt/
gs://hail-datasets-us/1000_Genomes_chrX.phase_3.GRCh37.mt/
gs://hail-datasets-us/1000_Genomes_chrX.phase_3.GRCh38.mt/
gs://hail-datasets-us/1000_Genomes_chrY.phase_3.GRCh37.mt/
gs://hail-datasets-us/1000_Genomes_chrY.phase_3.GRCh38.mt/
gs://hail-datasets-us/1000_Genomes_phase3_European_autosomes_maf_gt_001.bm/
gs://hail-datasets-us/1000_Genomes_phase3_European_autosomes_maf_gt_001.metadata.he/
gs://hail-datasets-us/1000_Genomes_phase3_European_autosomes_maf_gt_001_standardized.bm/
gs://hail-datasets-us/1000_Genomes_phase3_European_autosomes_maf_gt_001_standardized.metadata.he/
gs://hail-datasets-us/1000_Genomes_phase3_sample_relationships.ht/
gs://hail-datasets-us/1000_Genomes_phase3_samples.ht/
gs://hail-datasets-us/GTEx_RNA_seq_gene_TPMs.v7.GRCh37.mt/
gs://hail-datasets-us/GTEx_RNA_seq_gene_read_counts.v7.GRCh37.mt/
gs://hail-datasets-us/GTEx_RNA_seq_junction_read_counts.v7.GRCh37.mt/
gs://hail-datasets-us/LDSC_baselineLD_v2.2_ld_scores.GRCh37.ht/
gs://hail-datasets-us/LDSC_baselineLD_v2.2_ld_scores.GRCh37.mt/
gs://hail-datasets-us/LDSC_baseline_v1.1_ld_scores.GRCh37.mt/
gs://hail-datasets-us/UK_Biobank_Rapid_GWAS_both_sexes.v2.GRCh37.mt/
gs://hail-datasets-us/UK_Biobank_Rapid_GWAS_female.v2.GRCh37.mt/
gs://hail-datasets-us/UK_Biobank_Rapid_GWAS_male.v2.GRCh37.mt/
gs://hail-datasets-us/annotations/