【场景】:将Gitlab服务器定时备份到Gitlab备份服务器
如果系统时间错误的话,会影响定时任务执行。
date
date -s "2023-06-02 15:15:00"
clock -w
hwclock -w
gitlab-rake gitlab:backup:create
项目 | 含义 | 范围 |
---|---|---|
第一个【*】 | 一个小时中的第几分钟 | 0~59 |
第二个【*】 | 一天中的第几个小时 | 0~23 |
第三个【*】 | 一个月中的第几天 | 1~31 |
第四个【*】 | 一年中的第几月 | 1~12 |
第五个【*】 | 一周当中的星期几 | 0~7(0、7都代表星期日) |
crontab -e
//周五晚上十点进行备份处理
0 22 * * 5 /opt/gitlab/bin/gitlab-rake gitlab:backup:create
systemctl restart crond
vim /etc/gitlab/gitlab.rb
//重新加载配置
gitlab-ctl reconfigure
//重启所有服务
gitlab-ctl restart
生成公钥、私钥(Gitlab源服务器)
// 全部回车
ssh-keygen -t rsa
mkdir -p /root/.ssh
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/
报错:
备份服务器上创建的目录后面有空格。
touch /root/.ssh/authorized_keys
cat id_rsa.pub >> authorized_keys
chmod 400 authorized_keys
mkdir -p /root/gitlab_backup
使用scp命令验证是否可以免密传输文件
vim /root/auto_backup_to_remote.sh
#!/bin/bash
# gitlab 服务器备份路径
LocalBackDir=/var/opt/gitlab/backups
# 远程备份服务器 gitlab备份文件存放路径
RemoteBackDir=/root/gitlab_backup
# 远程备份服务器 登录账户
RemoteUser=root
# 远程备份服务器 IP地址
RemoteIP=192.168.14.150
#当前系统日期
DATE=`date +"%Y-%m-%d"`
#Log存放路径
LogFile=$LocalBackDir/log/$DATE.log
# 查找 gitlab本地备份目录下 时间为60分钟之内的,并且后缀为.tar的gitlab备份文件
BACKUPFILE_SEND_TO_REMOTE=$(find $LocalBackDir -type f -mmin -60 -name '*.tar*')
#新建日志文件
touch $LogFile
#追加日志到日志文件
echo "Gitlab auto backup to remote server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo "---------------------------------------------------------------------------" >> $LogFile
# 输出日志,打印出每次scp的文件名
echo "---------------------The file to scp to remote server is: $BACKUPFILE_SEND_TO_REMOTE-------------------------------" >> $LogFile
#备份到远程服务器
scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir
#追加日志到日志文件
echo "---------------------------------------------------------------------------" >> $LogFile
chmod 777 /root/auto_backup_to_remote.sh
mkdir -p /var/opt/gitlab/backups/log
crontab -e
//周五晚上十一点同步到备份服务器
0 23 * * 5 /root/auto_backup_to_remote.sh -D 1
systemctl restart crond
现象:不能正常执行文件备份
脚本22行为查找 gitlab本地备份目录下,时间为60分钟之内的,并且后缀为.tar的gitlab备份文件。
首先执行查找文件命令【find $LocalBackDir -type f -mmin -60 -name '*.tar*'】
命令不能正常执行,仔细排查发现 -name 参数前多了一个中文空格。
因服务器时间错误,生成的备份文件时间与当前时间差异过大,
命令【find $LocalBackDir -type f -mmin -60 -name '*.tar*'】查询不到新生成的备份文件,导致文件不能正常备份。