#!/bin/bash #獲取當天的年月日 nowDate=`date "+%Y%m%d"` #res=`/usr/bin/docker exec -it gitea /bin/sh -c "su git -c 'cd /data/ && /usr/local/bin/gitea dump --file '$nowDate'.zip'"` #備份 res=`/usr/bin/docker exec -u git $(docker ps -qf "name=publish_gitea_1") bash -c 'cd /data/ && /usr/local/bin/gitea dump --file '$nowDate'.zip'` echo '備份完成!' #上傳備份文件到OBS前的登錄 /root/publish/cicd/data/gitea/obsutil config -i=AK -k=SK -e=Endpoint #上傳備份文件到OBS /root/publish/cicd/data/gitea/obsutil cp /root/publish/cicd/data/gitea/$nowDate.zip obs://dsideal/HuangHai/giteaBackup/$nowDate.zip echo '上傳備份文件到OBS完成!' #獲取10天前的年月日 delData=`date -d"-10 day" +%Y%m%d` #刪除OBS上10天前的舊備份文件 /root/publish/cicd/data/gitea/obsutil rm obs://dsideal/HuangHai/giteaBackup/$delData.zip -f echo '刪除OBS上10天前的舊備份文件完成!' #刪除本地已上傳到OBS的備份文件 rm -rf /root/publish/cicd/data/gitea/$nowDate.zip echo '刪除本地已上傳到OBS的備份文件完成!'
需要備註的是 在crontab中執行docker不能帶-it選項,因爲it需要開終端。crontab中肯定沒有終端,這會導致失敗。
obsutil下載和安裝說明
https://support.huaweicloud.com/utiltg-obs/obs_11_0003.html
設置crontab
crontab -u root -e 30 1 * * * /root/publish/cicd/data/gitea/backup.sh >/dev/null 2>&1 Crtl+x 退出並保存