首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rdiff-备份bash脚本和cron故障

rdiff-备份bash脚本和cron故障
EN

Stack Overflow用户
提问于 2013-03-24 19:03:26
回答 1查看 1.9K关注 0票数 2

我有一个非常简单的bash脚本:

代码语言:javascript
复制
#!/opt/bin/bash
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/www/vhosts /volume1/backups/vhosts 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/etc /volume1/backups/etc 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics /volume1/homes /volume1/backups/homes 2>&1 >> /var/log/rdiff-backup.log;
cat /var/log/rdiff-backup.log | /opt/bin/nail -s "rdiff-backup log" me@email.com;

如果我从命令行运行脚本,以这种方式运行:

代码语言:javascript
复制
nohup /path/to/my/scipt.sh &

它工作正常,将每个rdiff备份统计报告附加到rdiff-backup.log,并按照预期将该文件发送到我的电子邮件地址。但是,如果我把脚本放在crontab中,脚本只生成一个rdiff备份作业,通过电子邮件发送统计信息。我不明白,因为剧本不一样.

有什么想法吗?

这是我的履历:

代码语言:javascript
复制
30 19 * * * /opt/bin/bash /volume1/backups/backup.sh

通过crontab,只有最后一个作业被正确执行,我认为这是因为这是唯一的本地备份。当我从命令行执行脚本时,我使用根用户,根用户的公钥位于远程计算机的/ root /./ssh/authorized_ key中。crontab文件的所有者也是根用户,我使用根帐户通过"crontab -e“创建它们。

EN

回答 1

Stack Overflow用户

发布于 2013-03-25 14:47:11

首先,您需要确保cron中使用的脚本没有输出任何内容,否则:

  1. 克伦会假设有一个错误
  2. 如果有错误,您将不会看到。

解决这一问题的方法是使用

代码语言:javascript
复制
30 19 * * * /opt/bin/bash /volume1/backups/backup.sh 2>&1 >> /var/log/rdiff-backup-cron.log;

第二,在通过cron执行时,您似乎丢失了env变量,请尝试将env设置添加到脚本中。

代码语言:javascript
复制
#!/opt/bin/bash
. /root/.profile
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log

如果/root/.profile没有,请尝试添加. /root/.bashrc/etc/profile

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15602683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档