从零开始的Devops-定时备份
Posted franzlistan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始的Devops-定时备份相关的知识,希望对你有一定的参考价值。
如何完成定时备份
想考虑清楚思路
一在备份机器上添加用户
useradd -m backupjumpserver
passwd backupjumpserver
useradd -m backupwiki
passwd backupjumpserver
useradd -m backupgit
passwd backupgit
useradd -m backupjenkins
passwd backupjenkins
以wiki为例子
远程登陆到jumpserver机器上
获取jumpserver启动账户的的/home/user/.ssh/下面的 idrsa.pub
粘贴到备份机器的新建的backupjumpserver账户下面的autorized_keys上面
在jumpserver机器上检测免密登陆ssh backupjumpserver@ip
成功后就可以免密登陆了
在备份机器上赋予需要备份的例如jira和wiki的文件夹的新建的备份目录以权限
在备份机器上 chown -R backupwiki /data/backupwiki
在备份机器上 chown -R backupjira /data/backupjira
在备份机器上 chown -R backupftp /data/backupftp
在jumpserver上写脚本
在jumpserver的/etc/cron.d目录下面新建backupxxx.sh
用cron执行定时任务
切换到su backupwiki
backupxxx.sh的思路
由应用触发备份
由命令触发
或由docker exec
或docker cp
产生备份
在jumpserver或wiki或jira或什么机器上写自动执行脚本
本地备份产物文件夹
本地备份日志
远程地址
远程路径
写日志开始备份
执行备份
找到过去24小时或者某个备份时间端的文件
找到文件find $LocalBackDir -type f -mmin -10 -name '*.tar' | tail -1
执行scp
清理旧的备份
写日志结束备份
https://blog.winsky.wang/Git/gitlab/Gitlab%E6%97%A5%E5%B8%B8%E5%A4%87%E4%BB%BD%E5%8F%8A%E8%BF%81%E7%A7%BB/
#!/bin/bash
# Gitlab自动备份脚本
#Gitlab 备份地址
LocalBackDir=/var/opt/gitlab/backups
#备份日志文件
LogFile=$LocalBackDir/remote_backup.log
#新建备份日志文件
touch $LogFile
echo "-------------------------------------------------------------------------" >> $LogFile
#记录本地生成gitlab备份日志
echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
#执行gitlab本地备份
gitlab-rake gitlab:backup:create >> $LogFile 2>&1
# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败
if [ $? -eq 0 ];then
#追加日志到日志文件
echo "Gitlab auto backup at local server successed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
else
#追加日志到日志文件
echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
fi
#查找本地备份目录修改时间为10分钟以内且后缀为.tar的Gitlab备份文件
Backfile_Send_To_Remote=`find $LocalBackDir -type f -mmin -10 -name '*.tar' | tail -1` >> $LogFile 2>&1
echo $Backfile_Send_To_Remote
#!/bin/bash
# 远程登录gitlab服务器,执行自动备份脚本,然后传输至本地
#Gitlab服务器
RemoteServer=git.ufeng.top
RemoteServerUser=root
#Gitlab服务器备份地址
RemoteBackDir=/var/opt/gitlab/backups
#NAS本地备份地址
LocalBackDir=/volume1/homes/gitlab_back
#备份日志文件
LogFile=$LocalBackDir/remote_backup.log
#新建备份日志文件
touch $LogFile
echo "-------------------------------------------------------------------------" >> $LogFile
#记录NAS下载gitlab备份日志
echo "Gitlab backup auto download at NAS, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
#远程登录gitlab服务器并执行备份脚本,获取备份文件的名字
result=`ssh $RemoteServerUser@$RemoteServer "sh /home/scripts/gitlab_backup.sh"`
#远程下载备份文件到本地
scp $RemoteServerUser@$RemoteServer:$result $LocalBackDir
echo "Gitlab remote backup file is ${result}" >> $LogFile
# 备份结果追加到备份日志
if [ $? -eq 0 ];then
echo ""
echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Succeed!" >> $LogFile
else
echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Failed!" >> $LogFile
fi
[root@gitlab ~]# vim auto_backup_to_remote.sh
LocalBackDir=/var/opt/gitlab/backups # gitlab备份文件目录
RemoteBackDir=/root/gitlab_backup # 远程的备份目录
RemoteUser=root # 远程服务器用户
RemotePort=22 # 远程服务器端口
RemoteIP=192.168.3.3 # 远程备份的服务器IP
DATE=`date +"%Y-%m-%d"` # 输出当日时间
LogFile=$LocalBackDir/log/$DATE.log # 日志文件
BACKUPFILE_SEND_TO_REMOTE=$(find /var/opt/gitlab/backups/ -type f -mmin -60 -name '*.tar*') # 找到gitlab 60分钟内备份生成的文件
touch $LogFile
echo "Gitlab auto backup to remote server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo "---------------------------------------------------------------------------" >> $LogFile
scp -P $RemotePort $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir
echo "---------------------------------------------------------------------------" >> $LogFile
以上是关于从零开始的Devops-定时备份的主要内容,如果未能解决你的问题,请参考以下文章