Pages - Menu

2023年5月19日 星期五

[GCP]gsutil整批複製

睡睡念

幫後端改圖片上傳的架構,直接把GCE(Google Compute Engine)的機器改成用GCS(GoogleCloudStorage),所以要把GCE的圖搬到GCS。


正文

  1. 首先要用到的是 [[135. gsutil整批複製|關閉ssh連線後,仍可執行程式]] ,不然用gcloud 連線時間過久是會被切斷連線的。

情境 1 整批資料夾

將nfs資料夾裡面的所有檔案/資料夾複製到bucket裡面,
-m 是多工,-r 是複製底下資料夾的檔案

gsutil  -m rsync -r nfs gs://systemfile-stage/

ref. gsutil rsync

情境2 ,複製特定資料夾

需要先建立一個文字檔,將資料夾名稱寫入

rsync.txt

20220201
20220301
20220310
while read p;
do
  folder=$(echo "$p");
  gsutil rsync -r nfs/$p gs://systemfile-stage/$p/
done < rsync.txt

情境3,複製特定圖片

這邊只能根據你的來源隨機應變了,
我的檔案格式為

keepfile.csv

"files/20230217/104abc69-e612-4b6c-abe4-52b91b79562f.jpg","17/2/2023 19:27:46.79"
"files/20230217/7a30d9eb-5e7c-4eb8-93c9-a72e5bd74f78.jpg","17/2/2023 19:28:47.56"
"files/20230217/ea81d738-ff0c-416a-b6d9-3520fda8f0ed.jpg","17/2/2023 19:32:47.44"
"files/20230217/7a7e1c75-4bec-4831-9a58-fa9650a82df1.jpg","17/2/2023 19:33:24.94"
"files/20230217/cf495ecb-71a9-4d46-95f4-b051f260523a.jpg","17/2/2023 19:33:49.4"
"files/20230217/eb05163b-bc0f-4e3b-96d5-82b0bb4f3a8d.jpg","17/2/2023 19:34:41.463"

所以,要改讀csv的格式,然後將路徑與檔案名稱拆開,
最後才複製圖片過去。但這個過成真的久,
如果可以最好是用rsync複製資料夾吧。

$file的變數,拆解出來有" ,所以又用了[[133. shell script字串處理]]的方式,將"刪除。

while IFS="," read -r path date
do
  folder=$(echo "$path" | awk -F '/' '{print $2}');
  file=$(echo "$path" | awk -F '/' '{print $3}');
  gsutil cp -n nfs/$folder/${file%*\"} gs://systemfile-stage/$folder/
done < keepfile-sort.csv

ref.

沒有留言:

張貼留言