一、需求 為預防gitlab出現故障,每天定時備份,備份完成後把之前的備份文件刪除,備份成功或失敗的時候自動發送郵件提醒,這裡的gitlab為docker部署。 二、備份命令準備 1)備份命令 創建一個 gitlab_auto_backup.sh文件,文件內容 #!/bin/bash # 進入Git ...
一、需求
為預防gitlab出現故障,每天定時備份,備份完成後把之前的備份文件刪除,備份成功或失敗的時候自動發送郵件提醒,這裡的gitlab為docker部署。
二、備份命令準備
1)備份命令
創建一個 gitlab_auto_backup.sh文件,文件內容
#!/bin/bash # 進入GitLab容器並執行備份 --gitlab為docker名稱 docker exec -t gitlab gitlab-backup create # 查找並刪除1天前的備份文件 /home/gitlab/opt/backups/ 為docker掛載data的目錄 find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;
把gitlab_auto_backup.sh文件放到伺服器上,這裡放到目錄 /home/gitlab/gitlab_auto_backup.sh
給許可權
chmod +x /home/gitlab/gitlab_auto_backup.sh
2)讓備份命令定時自動執行
使用linux的cron來定時執行上面創建的命令腳本文件,vi /etc/crontab 打開 crontab文件
每天零晨2點執行
3)linux伺服器郵件發送配置
配置發送郵件服務
安裝mailx sendmail,如果已安裝會提示已經安裝,沒安裝會自動安裝
yum install -y mailx sendmail
查看Active的狀態
systemctl status sendmail
如果active(running)正常,如果為dead則需要啟動服務,啟動命令
systemctl start sendmail
配置服務 /etc/mail.rc,以163郵箱為例
#打開配置文件
vi /etc/mail.rc
編輯配置文件增加配置
set [email protected] #郵箱 set smtp=smtp.163.com #smtp地址 set smtp-auth-user=xxxx@163.com set smtp-auth-password=授權碼 #不是郵件的密碼,是申請smpt發送郵件的授權碼 set smtp-auth=login
郵件發送測試
1、直接發送內容
發送內容:test content
標題:test title
echo "test content" | mail -s "test title" [email protected]
2、使用文件內容作為郵件內容發送
把 /tmp/test.txt的內容作為郵件內容發送
mail -s "test title" [email protected] < /tmp/test.txt
4)備份成功失敗發送郵件
修改備份命令,增加發送郵件。gitlab_auto_backup.sh完整內容替換為:
#!/bin/bash # 進入GitLab容器並執行備份 docker exec -t gitlab gitlab-backup create # $?符號顯示上一條命令的返回值,如果為0則代表執行成功,其他表示失敗,註間中括弧前後有一個空格 if [ $? -eq 0 ];then echo "gitlab備份成功" | mail -s "gitlab備份成功" 123456@qq.com else echo "gitlab備份失敗" | mail -s "gitlab備份失敗" 123456@qq.com fi # 查找並刪除1天前的備份文件 find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;
手動執行gitlab_auto_backup.sh文件測試效果
#執行備份命令 /home/gitlab/gitlab_auto_backup.sh
完成!