vim gitlab_backup.sh
#!/bin/bash
case "$1" in
"start")
docker exec gitlab gitlab-rake gitlab:backup:create
;;
esac
授权文件
chmod 777 gitlab_backup.sh
crontab -e
输入上面脚本路径
00 12 * * * sh /data/backup/gitlab_backup.sh start
当前表示每天12点开始执行 - 前面规则可以改
分 时 日 月 周 命令
第1列表示分钟,1~59,每分钟用*表示
第2列表示小时,1~23,(0表示0点)
第3列表示日期,1~31
第4列表示月份,1~12
第5列表示星期,0~6(0表示星期天)
第六列表示要运行的命令。
比如每天13:00、16:00生成:
0 13 * * * sh backup.sh start
systemctl restart crond
备份文件在你docker指定的映射路径下/gitlab/data/backups/
可以使用命令查看定时任务执行日志
cat /var/spool/mail/root
yum -y install rsync
vim rsync.sh
#!/bin/bash
rsync -arvuz /data/docker-data/gitlab/data/backups/ root@192.168.0.26:/data/backups/
上面ip改为你要备份到哪个异地服务器,然后授权文件
chmod 777 rsync.sh
操作支持免密访问异地服务器
ssh-keygen -t rsa
默认enter按下去就可以,然后公钥传输到异地服务器
scp -p .ssh/id_rsa.pub root@192.168.0.26:/root/.ssh/authorized_keys
crontab -e
输入上面脚本路径
30 12 * * * sh /data/backup/rsync.sh start
systemctl restart crond
可以使用命令查看定时任务执行日志
cat /var/spool/mail/root
后续需要使用备份文件恢复gitlab可以使用以下命令
#进入到docker对应镜像的环境内部
docker exec -it gitlab /bin/bash
#执行还原,时间改为对应备份文件的前面时间戳
gitlab-rake gitlab:backup:restore BACKUP=1662376655_2022_09_05_14.10.0
#拉取旧库所有远程分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
#手动上传项目到新的远程仓库
git remote remove origin
git remote add origin http://ip:port/iad/ECRM.git
git push -u origin --all