rsync 定时备份 简陋版

时间:2023-03-09 02:10:39
rsync 定时备份<crontab+backrsync.sh> 简陋版

【如需要时时备份的话,看此链接:https://www.cnblogs.com/drgcaosheng/p/12186740.html】

数据需要定时的备份至其它的目录中,但是备份之前检查检查一下是否有rsync正在运行,曾经因为数据过大,导致有很多rsync进程在跑,然后服务器有出现卡死的现象。最终写了一条bash,先检查一下是否有这个进程,然后再来进行处理,只是简单的做记录,大神勿喷

《有小伙伴同步的时候反馈说远程的备份需要密码,其实我有偷偷的使用 ssh-keygen 生成过key,所以不需要密码的,下面是生成key的步骤》

1. 在需要备份的服务器上面运行

#ssh-keygen
然后一路回车

2.通过ssh-copy-id复制文件至远程的机器上面

#ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100

输入一下密码即可

1. 先直接设置一下crontab的定时任务

[root@localhost mail]# crontab -l
*/5 * * * * bash /usr/local/mail/backrsync.sh
[root@localhost mail]#

2. 下面贴一下简单的bash的小脚本,前面是默认的常用的function,偷懒,直接复制过来了。

#!/bin/bash
# Filename: backrsync.sh #printlog 函数说明
#两个参数,一,是否打印日志,二,日志内容
#一可选,,,0表示不打印日志内容出来,1表示打印日志内容出来
LOGFILE_PATH="/var/log/zdrsynclog"
NOWTIME=`date "+%Y-%m-%d %H:%M:%S"`
function printlog()
{
LOG_CONTENT="$NOWTIME $2"
#echo $LOG_CONTENT
if [ $ -ne ]; then
echo $LOG_CONTENT
echo $LOG_CONTENT>>$LOGFILE_PATH
else
echo $LOG_CONTENT>>$LOGFILE_PATH
fi
} #检查上一条命令执行是否正常,不正常退出
check_error_exit()
{
#echo $?"+++++++++++"
RUSELT=$?
if [ ${RUSELT} -ne ]; then
printlog "#[ERROR] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
printlog "#[ERROR] 恭喜,光荣而伟大的报错了 : "$
printlog "#[ERROR] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
exit
fi
} #输出颜色字体
function echo_colour()
{
if [ $ -eq ]; then
echo -e "\033[41;37m ${2} \033[0m"
return
fi if [ $ -eq ]; then
echo -e "\033[43;37m ${2} \033[0m"
return
fi if [ $ -eq ]; then
echo -e "\033[47;30m ${2} \033[0m"
return
fi
} #打印结束符
print_end()
{
printlog "<<<<<<<<<<<<<<<<<<<<<<END<<<<<<<<<<<<<<<<<<<<<<<<<<"

}
printlog "<<<<<<<<<<<<<<<<<<<<<<Start<<<<<<<<<<<<<<<<<<<<<<<<<<"

#主要是下面的这句了,检查一下有没有rsync进程,如果有就直接提示有在运行,写到日志中,然后再等下一步循环了
ps -ef|grep 'rsync'|grep -v 'grep'|grep -v 'backrsync'
if [ $? -ne ]
then
printlog "start process..."
printlog "$NOWTIME: crontab start"
    checkmaildir="/umaildataback/backup"
    if [ -d ${checkmaildir} ];then
        echo "yes"
        /usr/bin/rsync -rav /home/mailbox /umaildataback/backup/
/usr/bin/rsync -rav /usr/local/mail/data/mailbox /mailbackmailbox/
/usr/bin/rsync -rav /usr/local/mail/data/backup/ /mailbackmailbox/mysqlback/
    else
        printlog 1 "No /umaildataback/backup"
    fi
printlog "Success Rsync"
else
printlog "runing...."
printlog "$NOWTIME: running... start"
fi
print_end

3,设置完了之后,再重启一下cron服务,就可以等输出了。</etc/init.d/crond restart>