google cloud instance 之間做 file sync

預設 gcp instance 是只能用 ssh key based 登入,而如果沒有幫 root 帳號(或者要執行 rsync 的帳號)產生 ssh key,那等於無法使用 rsync 這個命令。

而 gcloud sdk 裏頭只有提供 copy 與 scp (其實是一樣)來做 instance 之間的檔案傳輸,除非是使用 bucket storage來做中繼站。
但是用 gcloud compute scp 或 gcloud compute copy 無法只處理更新的檔案,而有浪費頻寬、時間等的問題。這時候要善用 find 指令… 比方說像是這樣…

find /var/opt/sharingdata/ -type f -mmin -1 -exec gcloud compute scp --recurse --compress --internal-ip {} --zone asia-east1-c [instance-name]:/var/opt/sharingdata/

然後掛上 crontab 就搞定了。