求助,关于自动备份脚本问题
因为网站文件夹比较大,所以用军哥的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 crontab格式没问题,你看一下系统日志里有什么信息
回复 2# 的帖子
感谢军哥回复。上次自动备份出问题是4月10号,/var/log/下面的日志除了lastlog(记录的我最后一次登录的IP),其他日志最新日期没有10号以后的。
另外/var/下面没有cron文件夹,不知道crontab的日志在哪看?
之前备份成功了,/var/mail/root里有记录,但是从3月12号开始就没有新增记录了。
另外,使用军哥的backup.sh每天自动备份数据库都是成功的,但是用我自己改的backup7.sh备份网站目录手动可以,自动会出错,不知道为什么。
好奇怪,可以明确的是backup7.sh是自动运行过的,因为旧文件被删除掉了,但是不知道为什么,新的备份没有生成成功。有没有可能是备份的时候VPS资源超限进程被终止导致的?
再次感谢!
回复 3# 的帖子
一般 /var/log/syslog 中会有执行的记录,你可以在crontab规则里加上 2>&1 | tee /root/backup7.log 记录一下备份的过程看看回复 4# 的帖子
再次感谢军哥答疑~/var/log/syslog是空的,3月12号以后就没更新了,用的ramnode的vps。
刚才重启了一下,不知道是不是之前有什么进程被kill掉所以出问题的。
另外请问crontab规则里加上 2>&1 | tee /root/backup7.log后,是不是还要把/etc/rsyslog.conf里#cron.* -/var/log/cron.log前面的#去掉啊?
回复 5# 的帖子
去掉#注释,重启rsyslog 就记录cron日志了回复 6# 的帖子
好的,谢谢军哥。另外报告下情况,我把VPS重启以后,这周一的自动备份正常了。估计之前是VPS资源超限导致的。现在我把备份保留时间改成了2周,这样即使备份失败,也不会丢失上一周的备份,自己及时查看下,至少不会丢文件。
后面我会继续跟进,看下周备份能不能正常。希望此帖可以帮到遇到同样问题的朋友。
页:
[1]