我有这个非常简单的 bash 脚本:
#!/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;
如果我从命令行运行脚本,以这种方式:
nohup /path/to/my/scipt.sh &
它工作正常,将每个 rdiff-backup 统计报告附加到 rdiff-backup.log 并将此文件发送到我的电子邮件地址,正如预期的那样。但是,如果我将脚本放在 crontab 中,该脚本只会生成一个 rdiff-backup 作业,通过电子邮件发送统计信息。我无法理解,因为脚本不能以相同的方式工作......
任何想法?
这是我的 cronjob 条目:
30 19 * * * /opt/bin/bash /volume1/backups/backup.sh
通过 crontab 只有最后一个作业被正确执行,我认为因为这是唯一的一个本地备份。当我从命令行执行脚本时,我使用 root 用户,并且 root 用户的公钥在远程机器的 /root/./ssh/authorized_keys 中。crontab 文件的所有者也是 root 用户,我使用 root 帐户通过“crontab -e”创建了它们。