docker gitlab定时备份与异地同步备份文件

第一章:gitlab定时备份

1、创建执行备份脚本

 vim gitlab_backup.sh
#!/bin/bash
case "$1" in
    "start")
        docker exec gitlab gitlab-rake gitlab:backup:create
        ;;
esac    

授权文件

chmod 777 gitlab_backup.sh

2、加入定时计划,定时执行

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

3、重启crond

systemctl restart crond

备份文件在你docker指定的映射路径下/gitlab/data/backups/

可以使用命令查看定时任务执行日志

cat /var/spool/mail/root

第二章:异地容灾将备份文件同步到其他服务器

第一步两台服务器都安装 rsync

yum -y install rsync

第二步gitlab所在服务器创建脚本

vim rsync.sh
#!/bin/bash
rsync -arvuz /data/docker-data/gitlab/data/backups/ [email protected]:/data/backups/

上面ip改为你要备份到哪个异地服务器,然后授权文件

chmod 777 rsync.sh

操作支持免密访问异地服务器

ssh-keygen -t rsa

默认enter按下去就可以,然后公钥传输到异地服务器

scp -p .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

第三步增加定时任务

crontab -e

输入上面脚本路径

30 12 * * * sh /data/backup/rsync.sh start

第四步重启crond

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

其他备忘:gitlab本地切换远程仓库语句

#拉取旧库所有远程分支
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

你可能感兴趣的:(技术分享,docker,linux,服务器)