本例脚本做以下几点说明:

1、gitlab 是基于 docker 运行的
2、备份的脚本先对 gitlab 进行备份,然后清理备份目录中4天以前的备份(这个天数根据自己需要修改)
3、将该备份脚本 backup.sh 加入到 Linux 的 crontab 中,每天夜里执行

#!/bin/bash
echo "开始执行gitlab备份命令..."
timer_start=`date "+%Y-%m-%d %H:%M:%S"`

# 注意这里不能加 -it 交互模式参数,否则 crontab 不能正常执行
docker exec gitlab gitlab-backup create

timer_end=`date "+%Y-%m-%d %H:%M:%S"`
duration=`echo $(($(date +%s -d "${timer_end}") - $(date +%s -d "${timer_start}"))) | awk '{t=split("60 s 60 m 24 h 999 d",a);for(n=1;n<t;n+=2){if($1==0)s="0s";break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}'`

echo "gitlab备份命令执行结束,耗时 $duration "

echo "开始清理多余的备份文件(清理N天以前)"

bashpath=$(cd `dirname $0`; pwd)
echo `find $bashpath/data/backups/ -maxdepth 1 -type f -mtime +4 | xargs rm -rf`

# 扩展将文件同步到备份服务器(例如使用rsnyc同步)
rsync -avz --delete --password-file=/etc/rsync.passwd $bashpath/data/backups/ rsync_backup@192.168.100.111::backup_gitlab

echo "脚本执行结束"

(END)