我正在尝试在 CentOS 版本 6.7(最终版)上的 cron 中安排一些备份脚本。
这是完整备份,基本上是挂载一个远程目录,检查是否有足够的空间进行备份(如果磁盘空间为 85% 或更少,则进行备份),最后发送邮件进行报告并卸载目录
该脚本位于/root/myjobs/
,其名称为fullbackup.sh
权限目前为 777 (-rwxrwxrwx)
#!/bin/bash
mount -t cifs //192.168.0.202/Volume_1 /mnt/nas -o username=Backup,password=PassBackup
ocupado="$(df /mnt/nas|tail -n 1|awk '{print $4}'|cut -d "%" -f 1)"
if [ $ocupado -gt 85 ]; then
echo "DISK IS FULL" | mail -s "SERVER" [email protected]
else
# This is anoying but at least works, I need to create a file with the name of the backup, delete it, and then make the backup with tar
touch /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz
rm -f /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz
tar -cvzpf /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz --exclude=/home/general /home
echo "FULL BACKUP OK" | mail -s "SERVER" [email protected]
fi
umount /mnt/nas/
如果我手动运行脚本,它可以正常工作,但如果我使用 cron 安排脚本,它只会发送邮件,但不会进行复制,就像它不执行 tar 命令一样。
如果我执行,crontab -e
我会看到 nano 编辑器,其顶部有以下路径:
/tmp/crontab.jdwF9c
我认为路径有问题,这就是我/etc/crontab
直接编辑文件配置 cron 的原因。
这是我的/etc/crontab
文件:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
0 9 1 * * root /root/myjobs/fullbackup.sh
我已尽我所能将这个问题翻译成西班牙语,希望大家能很好地理解这个问题。
感谢您的帮助!
编辑1:我远程与服务器交互。当我连接时,cron 运行脚本并正常工作,但如果我关闭 ssh 连接并等待命令在第二天 9:00 运行,则不会正常工作。在这种情况下,只会发送邮件。
答案1
尝试使用完整路径调用 tar。例如,在我的系统上,它是/bin/tar
。您可以使用 来查找which tar
。