全球主机交流论坛

标题: 请教:crontab 不能执行shell里面的ftp是什么情况? [打印本页]

作者: joyanhui    时间: 2012-6-27 10:21
标题: 请教:crontab 不能执行shell里面的ftp是什么情况?
比着小夜的教材做了一个 autoBackupToFtp.sh,自动压缩vps然后ftp异地备份一下。

ssh里面,直接执行  ~/autoBackupToFtp.sh   一切正常

加到crontab 里面之后发现 只打包压缩,不自动连ftp。。。。


第一次遇到这种情况,凌乱了两天了,求教。
作者: _____________Cc    时间: 2012-6-27 10:23
不如sftp
作者: joyanhui    时间: 2012-6-27 10:23
_____________Cc 发表于 2012-6-27 10:23
不如sftp

我是备份到一台win主机上,还是ftp方便一些。
作者: nbweb    时间: 2012-6-27 10:23
apt-get install ftp

是因为ftp没有安装
作者: _____________Cc    时间: 2012-6-27 10:24
35 1 * * * /usr/bin/lftp  -u user:passwd -e "mirror -R --delete --only-newer --verbose /home/wwwroot /www/web" ftp.url
作者: joyanhui    时间: 2012-6-27 10:25
nbweb 发表于 2012-6-27 10:23
apt-get install ftp

是因为ftp没有安装

安装了,shell程序直接执行 是可以,加到计划任务里面 就不行鸟
作者: _____________Cc    时间: 2012-6-27 10:25
ftp能连  lftp就能连
作者: _____________Cc    时间: 2012-6-27 10:26
手动执行一下我命令试试效果
lftp  -u user:passwd -e "mirror -R --delete --only-newer --verbose /home/wwwroot /www/web" ftp.url

自己修改下路径 还有IP 帐号密码
作者: joyanhui    时间: 2012-6-27 10:28
_____________Cc 发表于 2012-6-27 10:26
手动执行一下我命令试试效果
lftp  -u user:passwd -e "mirror -R --delete --only-newer --verbose /home/ ...

lftp是没有问题的,我之前是用lftp,只是因为别的需求 所以改成了ftp。

现在的问题是,手工执行ftp命令,或者手工运行写好的autoBackupToFtp.sh 是没有问题的
但是把autoBackupToFtp.sh 加到crontab之后ftp命令就不执行。
作者: lazyzhu    时间: 2012-6-27 10:30
本帖最后由 lazyzhu 于 2012-6-27 10:31 编辑

/bin/sh ~/autoBackupToFtp.sh
or
/bin/bash ~/autoBackupToFtp.sh
作者: johnnyfu829    时间: 2012-6-27 10:30
路径问题吧
作者: joyanhui    时间: 2012-6-27 10:31
lazyzhu 发表于 2012-6-27 10:30
sh ~/autoBackupToFtp.sh
or
bash ~/autoBackupToFtp.sh

明白了,马上测试
作者: lazyzhu    时间: 2012-6-27 10:32
joyanhui 发表于 2012-6-27 10:31
明白了,马上测试

/bin/sh ~/autoBackupToFtp.sh
or
/bin/bash ~/autoBackupToFtp.sh
作者: joyanhui    时间: 2012-6-27 10:45
lazyzhu 发表于 2012-6-27 10:30
/bin/sh ~/autoBackupToFtp.sh
or
/bin/bash ~/autoBackupToFtp.sh

问题还是没有解决:

/bin/bash /root/autoBackupToFtp.sh  这条命令没有问题,可以完成tar和ftp的操作

计划任务里面加了一行
  1. 38 10 * * * /bin/sh  /root/autoBackupToFtp.sh
复制代码
只能完成压缩动作,不能上传,我一直监控进程发现ftp命令执行过,只是后面的命令没有执行
  1. #上传到FTP空间,删除FTP空间5天前的数据
  2. ftp -v -n ${FTP_IP}  ${FTP_port}<< END
  3. user $FTP_USER $FTP_PASS
  4. type binary
  5. cd $FTP_backup
  6. delete $OldData
  7. delete $OldWeb
  8. delete $OldConfig
  9. put $DataBakName
  10. put $WebBakName
  11. put $ConfigBakName
  12. bye
  13. END
复制代码

作者: johnnyfu829    时间: 2012-6-27 10:49
本帖最后由 johnnyfu829 于 2012-6-27 11:17 编辑

ftp那个命令要带绝对路径的

改成这样看看吧:
  1. /usr/bin/ftp -v -n ${FTP_IP}<< END
复制代码

作者: lazyzhu    时间: 2012-6-27 10:51
本帖最后由 lazyzhu 于 2012-6-27 10:54 编辑

以前有人问过,环境的路径问题
autoBackupToFtp.sh第一行下面加:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

试试看吧,不保证有用,
作者: nbweb    时间: 2012-6-27 11:01
joyanhui 发表于 2012-6-27 10:45
问题还是没有解决:

/bin/bash /root/autoBackupToFtp.sh  这条命令没有问题,可以完成tar和ftp的操作

ftp -vn ftp.aaa.com << autoftp
user name pass

作者: joyanhui    时间: 2012-6-27 11:11
lazyzhu 发表于 2012-6-27 10:51
以前有人问过,环境的路径问题
autoBackupToFtp.sh第一行下面加:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ ...

试过了,确实没用
作者: johnnyfu829    时间: 2012-6-27 11:18
joyanhui 发表于 2012-6-27 11:11
试过了,确实没用

我估计还是你的ftp后面的参数问题,我以前好像也遇到过的,加上port参数出过问题,你把port那个参数去掉,应该会自动加上默认的port参数,用17楼的或者你ftp带上绝对路径试试
作者: joyanhui    时间: 2012-6-27 11:30
johnnyfu829 发表于 2012-6-27 11:18
我估计还是你的ftp后面的参数问题,我以前好像也遇到过的,加上port参数出过问题,你把port那个参数去掉 ...

试过了 无效。另外我端口不是21 所以这里需要加上端口。
作者: ericls    时间: 2012-6-27 11:31
装ftp
作者: joyanhui    时间: 2012-6-27 11:35
ericls 发表于 2012-6-27 11:31
装ftp

哥们,肯定是装了ftp的,能看看帖子再给回复吗。谢谢!
作者: ericls    时间: 2012-6-27 11:36
joyanhui 发表于 2012-6-27 11:35
哥们,肯定是装了ftp的,能看看帖子再给回复吗。谢谢!

呃。。 有日志没?
作者: joyanhui    时间: 2012-6-27 11:38
ericls 发表于 2012-6-27 11:36
呃。。 有日志没?

我也刚刚测试出来

19  11 * * * /bin/sh  /root/autoBackupToFtp.sh >/root/auto.log

可以执行,并且非常正常

19  11 * * * /bin/sh  /root/autoBackupToFtp.sh

就不行了。很郁闷
作者: ericls    时间: 2012-6-27 11:39
joyanhui 发表于 2012-6-27 11:38
我也刚刚测试出来

19  11 * * * /bin/sh  /root/autoBackupToFtp.sh >/root/auto.log

奇怪
作者: joyanhui    时间: 2012-6-27 12:08
ericls 发表于 2012-6-27 11:39
奇怪

再次复查 依旧如此,,,郁闷中
作者: UCVPS    时间: 2012-6-27 12:13
贴完整脚本
作者: malsvent    时间: 2012-6-27 12:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: joyanhui    时间: 2012-6-27 12:44
UCVPS 发表于 2012-6-27 12:13
贴完整脚本
  1. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  2. export PATH
  3. #!/bin/bash
  4. #你要修改的地方从这里开始
  5. ThisHostName=****
  6. MYSQL_USER=root                             #mysql用户名
  7. MYSQL_PASS=***                      #mysql密码
  8. MAIL_TO=***m               #数据库发送到的邮箱
  9. FTP_USER=****#ftp用户名
  10. FTP_PASS=j******                         #ftp密码
  11. FTP_IP=*******                         #ftp地址
  12. FTP_port=2129
  13. FTP_backup=Backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
  14. WEB_DATA=/home/wwwroot                         #要备份的网站数据
  15. #你要修改的地方从这里结束

  16. #定义数据的名字
  17. DataBakName=${ThisHostName}_Data_$(date +"%Y%m%d").tar.gz
  18. WebBakName=${ThisHostName}_Web_$(date +%Y%m%d).tar.gz
  19. ConfigBakName=${ThisHostName}_Config_$(date +%Y%m%d).tar.gz
  20. #定义删除FTP上多少天之前的数据
  21. OldData=${ThisHostName}_Data_$(date -d -5day +"%Y%m%d").tar.gz
  22. OldWeb=${ThisHostName}_Web_$(date -d -5day +"%Y%m%d").tar.gz
  23. OldConfig=${ThisHostName}_Config_$(date -d -5day +"%Y%m%d").tar.gz
  24. #删除本地3天前的数据
  25. rm -rf /home/backup/${ThisHostName}_Data_$(date -d -3day +"%Y%m%d").tar.gz
  26. rm -rf  /home/backup/${ThisHostName}_Web_$(date -d -3day +"%Y%m%d").tar.gz
  27. rm -rf  /home/backup/${ThisHostName}_Config_$(date -d -3day +"%Y%m%d").tar.gz


  28. mkdir -p /home/backup/
  29. cd /home/backup

  30. #导出数据库,一个数据库一个压缩文件
  31. for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
  32.     (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
  33. done

  34. #压缩数据库文件为一个文件
  35. tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
  36. rm -rf /home/backup/*.sql.gz
  37. #发送数据库到Email,意义不是很大,这里只是一个例子
  38. #echo "主题:数据库备份" | mutt -a /home/backup/$DataBakName -s "内容:数据库备份" $MAIL_TO

  39. #压缩网站数据
  40. tar zcf /home/backup/$WebBakName $WEB_DATA  --exclude=*.tar.gz

  41. #压缩配置文件
  42. tar zcf /home/backup/php.etc.Config.tar.gz /usr/local/php/etc
  43. tar zcf /home/backup/nginx.conf.Config.tar.gz /usr/local/nginx/conf
  44. tar zcf /home/backup/my.conf.Config.tar.gz /etc/my.cnf
  45. #压缩配置文件为一个文件
  46. tar zcf /home/backup/$ConfigBakName /home/backup/*.Config.tar.gz
  47. rm -rf /home/backup/*.Config.tar.gz

  48. #上传到FTP空间,删除FTP空间5天前的数据
  49. ftp -v -n ${FTP_IP}  ${FTP_port}<< autoftp
  50. user ${FTP_USER} ${FTP_PASS}
  51. type binary
  52. cd ${FTP_backup}
  53. delete ${OldData}
  54. delete ${OldWeb}
  55. delete ${OldConfig}
  56. put ${DataBakName}
  57. put ${WebBakName}
  58. put ${ConfigBakName}
  59. bye
  60. END
复制代码
已贴
  1. 19  11 * * * /bin/sh  /root/autoBackupToFtp.sh >/root/auto.log
复制代码
可以执行,并且非常正常
  1. 19  11 * * * /bin/sh  /root/autoBackupToFtp.sh
复制代码
就不行了。很郁闷
作者: UCVPS    时间: 2012-6-28 07:30
原版是这样的
你那autoftp是不是错了啊
  1. #上传到FTP空间,删除FTP空间5天前的数据
  2. ftp -v -n $FTP_IP << END
  3. user $FTP_USER $FTP_PASS
  4. type binary
  5. cd $FTP_backup
  6. delete $OldData
  7. delete $OldWeb
  8. put $DataBakName
  9. put $WebBakName
  10. bye
  11. END
复制代码

作者: Edit    时间: 2012-6-28 10:25
提示: 该帖被管理员或版主屏蔽
作者: Edit    时间: 2012-6-28 10:45
http://www.sunk.eu.org/thread-132612-1-1.html
手机回复居然屏蔽~~
作者: mope007    时间: 2012-6-28 13:37
joyanhui 发表于 2012-6-27 12:44
已贴可以执行,并且非常正常就不行了。很郁闷

有新版了,试试看?
作者: mope007    时间: 2012-6-28 13:50
UCVPS 发表于 2012-6-28 07:30
原版是这样的
你那autoftp是不是错了啊

有新版了,不过ftp那块应该是没变
作者: larry    时间: 2012-6-28 14:33
joyanhui 发表于 2012-6-27 12:44
已贴可以执行,并且非常正常就不行了。很郁闷

可以执行,并且非常正常.

既然非常正常了,就这么用呗,还有什么好纠结的。




欢迎光临 全球主机交流论坛 (https://sunk.eu.org/) Powered by Discuz! X3.4