因為samba裝起來怪怪的,然後又多開了一個洞,不如就不要用。另外 gcloud compute copy-files 試了一下有遇到一些 permission 問題,再加上要 remote backup 有的不見得會是在 google cloud 上,所以下面這個算是個 general solution (?)
首先要先backup gitlab, 用 crontab
15 02 * * 2-6 umask 0022; tar -zcf /tmp/gitlab_backup/$(date "+gitlab-\%Y\%m\%d.tar.gz") -C / var/opt/gitlab --exclude=var/opt/gitlab/backups
umask 可以查wikipedia跟這邊。關於備份gitlab可以參考官方文件。
備份之後就是要傳送到remote機器上去,我是從remote machine來抓,首先先寫好script,假設放在/tmp/gitlab_backup/copyGitLabBackup.sh (在這之前先裝好 expect,看是在 centos下yum install expect, 或者是在 ubuntu下 apt-get install expect)。
#!/bin/bash d=$(date +gitlab-%Y%m%d.tar.gz) echo $d expect -c " spawn scp -i /home/username/.ssh/id_rsa username@IP_ADDRESS:/tmp/gitlab_backup/$(date +gitlab-%Y%m%d.tar.gz) /tmp/gitlab_backup expect \"Enter passphrase for key '/home/username/.ssh/id_rsa': \" send \"password\r\" expect \"100%\" sleep 1 expect ]# "
如果帳號是用ssh key登入的,記得要設定一下password,另外有出現過不會跳訊息要求輸入password 的。
然後就是在來加個 crontab
55 02 * * 2-6 /bin/bash -c "/tmp/gitlab_backup/copyGitLabBackup.sh"