VPS侦探论坛

 找回密码
 注册
查看: 3762|回复: 6

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

[复制链接]
发表于 2017-4-14 11:12:32 | 显示全部楼层 |阅读模式

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

crontab代码如下:


  1. 00 03 * * * /root/backup.sh
  2. 00 04 * * 1 /root/backup7.sh
复制代码



backup7.sh代码如下:

  1. #!/bin/bash

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

  5. #IMPORTANT!!!Please Setting the following Values!

  6. Backup_Home="/home/backup/"

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


  9. ######~Enable Ftp Backup~######
  10. Enable_FTP=0
  11. # 0: enable; 1: disable
  12. ######~Set FTP Information~######
  13. FTP_Host='1.2.3.4'
  14. FTP_Username='12345'
  15. FTP_Password='12345'
  16. FTP_Dir="backup"

  17. #Values Setting END!

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

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

  27. if [ ! -d ${Backup_Home} ]; then  
  28.     mkdir -p ${Backup_Home}
  29. fi

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

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

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

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

  46. echo "complete."
  47. fi
复制代码
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2017-4-14 16:15:23 | 显示全部楼层


crontab格式没问题,你看一下系统日志里有什么信息
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 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资源超限进程被终止导致的?

再次感谢!
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2017-4-15 10:13:10 | 显示全部楼层

回复 3# 的帖子




一般 /var/log/syslog 中会有执行的记录,你可以在crontab规则里加上 2>&1 | tee /root/backup7.log 记录一下备份的过程看看
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 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前面的#去掉啊?

军哥运维代购:http://shop63846532.taobao.com/

发表于 2017-4-15 19:46:16 | 显示全部楼层

回复 5# 的帖子


去掉#注释,重启rsyslog 就记录cron日志了
 楼主| 发表于 2017-4-17 22:25:16 | 显示全部楼层

回复 6# 的帖子


好的,谢谢军哥。

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

后面我会继续跟进,看下周备份能不能正常。希望此帖可以帮到遇到同样问题的朋友。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-11-17 12:43 , Processed in 0.027427 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表