1.本地備份:
????執(zhí)行命令 gitlab-rake gitlab:backup:create即可
? ? 默認備份目錄為:/var/opt/gitlab/backups, 可在?/etc/gitlab/gitlab.rb 中修改backup_path指定目錄
? ? 如遇到錯誤:
? ? 一般為目錄權限問題,可執(zhí)行gitlab-rake gitlab:check命令查看錯誤情況,執(zhí)行相應命令即可
2.定時備份及清理
? ? crontab -e編輯系統(tǒng)定時任務:
? ? 如圖為每日23點執(zhí)行備份命令
? ? 定時清理:
? ? 使用gitlab自動清理,修改/etc/gitlab/gitlab.rb文件,取消backup_keep_time前注釋
? ? 如圖:
? ? 604800 = 7*24*3600 上圖設置為自動清理7天之前的備份
? ? 重啟gitlab配置:?gitlab-ctl reconfigure
3.備份到遠程
? ? 3.1 設置服務器A-B免密登陸:
? ? 在A服務器生產公私玥: ssh-keygen -t rsa,其中注意在設置密碼時不輸入密碼,方可免密,否則在傳輸時需輸入設置的密碼.
? ? 在A服務器使用 scp /root/.ssh/id_rsa.pub user@B:/root/.ssh/將公鑰文件上傳至B服務器
? ? 在B服務器創(chuàng)建authorized_keys文件: touch /root/.ssh/authorized_keys
? ? 將id_rsa.pub 文件加入到authorized_keys,使用: cat?id_rsa.pub >>?authorized_keys
? ? 3.2 編寫自動上傳腳本 auto_backup_to_remote.sh?
? ??#!/bin/bash
????# gitlab 服務器備份路徑
????LocalBackDir=/var/opt/gitlab/backups
????# 遠程備份服務器 gitlab備份文件存放路徑
????RemoteBackDir=/root/gitlab_backup
????# 遠程備份服務器 登錄賬戶
????RemoteUser=root
????# 遠程備份服務器 IP地址
????RemoteIP=(備份服務器B的地址杂数,請你自行修改)
????#當前系統(tǒng)日期
????DATE=`date +"%Y-%m-%d"`
????#Log存放路徑
????LogFile=$LocalBackDir/log/$DATE.log
????# 查找 gitlab本地備份目錄下 時間為60分鐘之內的,并且后綴為.tar的gitlab備份文件
????BACKUPFILE_SEND_TO_REMOTE=$(find $LocalBackDir -type f -mmin -60? -name '*.tar*')
????#新建日志文件
????touch $LogFile
????#追加日志到日志文件
????echo "Gitlab auto backup to remote server, start at? $(date +"%Y-%m-%d %H:%M:%S")" >>? $LogFile
????echo "---------------------------------------------------------------------------" >> $LogFile
????# 輸出日志益缎,打印出每次scp的文件名
????echo "---------------------The file to scp to remote server is: $BACKUPFILE_SEND_TO_REMOTE------------- ????------------------" >> $LogFile
????#備份到遠程服務器
????scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir
????#追加日志到日志文件
????echo "---------------------------------------------------------------------------" >> $LogFile
? ? 3.3 添加上傳腳本到定時任務
????crontab -e
3.4 B服務器添加定時刪除腳本
編寫刪除腳本auto_remove_old_backup.sh
上圖為定時刪除14天之前的備份文件
至此,gitlab定時備份到遠程服務器步驟完成.