jekyll 发表于 2017-4-14 11:12:32

求助,关于自动备份脚本问题

因为网站文件夹比较大,所以用军哥的backup.sh每天只备份数据库。然后自己改了个backup7.sh,每周一备份网站文件夹。
但是现在出现一个问题,就是手动运行backup7.sh可以正常备份,但是每周一自动运行的时候,就出错,旧备份都删除了,但是新备份失败了,无论是源VPS里的backup文件夹,还是备份VPS里的备份文件夹里,都没有新的网站文件夹备份。
特来求助军哥,谢谢。

crontab代码如下:


00 03 * * * /root/backup.sh
00 04 * * 1 /root/backup7.sh


backup7.sh代码如下:

#!/bin/bash

#Funciont: Backup website and mysql database
#Author: licess
#Website: http://lnmp.org

#IMPORTANT!!!Please Setting the following Values!

Backup_Home="/home/backup/"

######~Set Directory you want to backup~######
Backup_Dir=("/home/wwwroot/www.12345.com")


######~Enable Ftp Backup~######
Enable_FTP=0
# 0: enable; 1: disable
######~Set FTP Information~######
FTP_Host='1.2.3.4'
FTP_Username='12345'
FTP_Password='12345'
FTP_Dir="backup"

#Values Setting END!

TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
OldWWWBackup=www-*-$(date -d -7day +"%Y%m%d").tar.gz

Backup_Dir()
{
    Backup_Path=$1
    Dir_Name=`echo ${Backup_Path##*/}`
    Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
    tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
}

if [ ! -d ${Backup_Home} ]; then
    mkdir -p ${Backup_Home}
fi

type lftp >/dev/null 2>&1 || { echo >&2 "lftp command not found. Install: centos:yum install lftp,debian/ubuntu:apt-get install lftp."; }

echo "Backup website files..."
for dd in ${Backup_Dir[@]};do
    Backup_Dir ${dd}
done

echo "Delete old backup files..."
rm -f ${Backup_Home}${OldWWWBackup}

if [ ${Enable_FTP} = 0 ]; then
    echo "Uploading backup files to ftp..."
    cd ${Backup_Home}
    lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
cd ${FTP_Dir}
mrm ${OldWWWBackup}
mput ${TodayWWWBackup}
bye
EOF

echo "complete."
fi

licess 发表于 2017-4-14 16:15:23

crontab格式没问题,你看一下系统日志里有什么信息

jekyll 发表于 2017-4-14 17:30:56

回复 2# 的帖子

感谢军哥回复。

上次自动备份出问题是4月10号,/var/log/下面的日志除了lastlog(记录的我最后一次登录的IP),其他日志最新日期没有10号以后的。
另外/var/下面没有cron文件夹,不知道crontab的日志在哪看?

之前备份成功了,/var/mail/root里有记录,但是从3月12号开始就没有新增记录了。

另外,使用军哥的backup.sh每天自动备份数据库都是成功的,但是用我自己改的backup7.sh备份网站目录手动可以,自动会出错,不知道为什么。

好奇怪,可以明确的是backup7.sh是自动运行过的,因为旧文件被删除掉了,但是不知道为什么,新的备份没有生成成功。有没有可能是备份的时候VPS资源超限进程被终止导致的?

再次感谢!

licess 发表于 2017-4-15 10:13:10

回复 3# 的帖子

一般 /var/log/syslog 中会有执行的记录,你可以在crontab规则里加上 2>&1 | tee /root/backup7.log 记录一下备份的过程看看

jekyll 发表于 2017-4-15 11:18:47

回复 4# 的帖子

再次感谢军哥答疑~
/var/log/syslog是空的,3月12号以后就没更新了,用的ramnode的vps。
刚才重启了一下,不知道是不是之前有什么进程被kill掉所以出问题的。
另外请问crontab规则里加上 2>&1 | tee /root/backup7.log后,是不是还要把/etc/rsyslog.conf里#cron.*                       -/var/log/cron.log前面的#去掉啊?

licess 发表于 2017-4-15 19:46:16

回复 5# 的帖子

去掉#注释,重启rsyslog 就记录cron日志了

jekyll 发表于 2017-4-17 22:25:16

回复 6# 的帖子

好的,谢谢军哥。

另外报告下情况,我把VPS重启以后,这周一的自动备份正常了。估计之前是VPS资源超限导致的。现在我把备份保留时间改成了2周,这样即使备份失败,也不会丢失上一周的备份,自己及时查看下,至少不会丢文件。

后面我会继续跟进,看下周备份能不能正常。希望此帖可以帮到遇到同样问题的朋友。
页: [1]
查看完整版本: 求助,关于自动备份脚本问题