gitlab學習(6)---gitlab遠端備份
假設:伺服器A:192.168.2.229
假設:備份伺服器B:192.168.2.230
1.伺服器B安裝git
2.在gitlab備份伺服器B上生成rsa證書
生成的過程中提示輸入金鑰對儲存位置,直接回車,接受預設值就行了
ssh-keygen -t rsa -C "[email protected]"
這樣,在/root/.ssh下生成id_rsa 和 id_rsa.pub 兩個檔案,其中公共金鑰儲存在 /root/.ssh/id_rsa.pub,私有金鑰儲存在/root/.ssh/id_rsa
3. 在gitlab伺服器B上cp生成rsa公鑰證書
在/root/.ssh下複製備份一份id_rsa.pub 命名為 id_rsa.pub.A,以便拷貝到遠端伺服器A。
cd /root/.ssh
cp id_rsa.pub id_rsa.pub.A
4.生成rsa公鑰證書上傳到伺服器A
先在伺服器A上建立目錄/root/.ssh。
mkdir -p /root/.ssh
使用scp命令進行遠端複製,將備份伺服器B生成的id_rsa.pub.A拷貝到伺服器A的/root/.ssh目錄下。在B執行,圖中IP是A的IP
scp /root/.ssh/id_rsa.pub.A [email protected]:/root/.ssh/
此時使用scp命令需要輸入密碼,當把下面的“2.3 金鑰配對”執行後,以後gitlab伺服器A使用scp命令複製檔案到備份伺服器B的話,就不需要輸入密碼了。
5 金鑰配對
1)建立authorized_keys檔案
在伺服器A的/root/.ssh下建立authorized_keys檔案。
touch /root/.ssh/authorized keys
2)將id_rsa.pub.A檔案內容追加到authorized_keys 檔案中
通過 cat 命令 把id_rsa.pub.A 追寫到 authorized_keys 檔案中。
cd /root/.ssh/
cat id_rsa.pub.A >> authorized_keys
3)修改authorized_keys檔案的許可權
authorized_keys檔案的許可權很重要,如果設定為777,那麼登入的時候,還是需要提供密碼的。
chmod 400 authorized_keys
我們發現不需要輸入密碼了:
6.定時將備份檔案傳到備份伺服器
建立遠端備份指令碼
在gitlab伺服器B上,在 /home/backups目錄下建立定期備份指令碼auto_backup_to_remote.sh。
vim /home/backups/auto_backup_to_remote.sh
修改遠端備份指令碼auto_backup_to_remote.sh的許可權
要能讓系統執行auto_backup_to_remote.sh,必須修改該指令碼的許可權。
chmod 777 auto_backup_to_remote.sh
建立日誌存放目錄
mkdir -p /home/backups/log
新增定時計劃
定時備份的思路建立在手動的基礎上,通過crontab新增定時計劃就可以解決這個問題。
一般新增定時計劃可以有2種方式:
1.使用命令crontab -e,將定時任務新增後儲存。
2.將定時任務新增到/etc/crontab檔案中。
我這裡採取第一種,使用crontab -e。
crontab -e
結合我之前對公司gitlab本地備份的設計,故分別在每天凌4點進行備份,故新增下面的內容,wq儲存。
0 4 * * * /home/backups/auto_backup_to_remote.sh -D 1
重啟crontab
systemctl restart crond