QNAP 4.1.0 & 使用自己的备份脚本与 crontab



我有一个问题,通过crontab在qnap nas上执行脚本。这是非常令人困惑的,因为其他的测试脚本工作和执行这个脚本手动工作。

脚本如下:

#!/bin/sh
[[ ! -d /mnt/backup-cr/daily.0 ]] && mount -t nfs -o nolock 192.168.178.2:/volume1/backup-cr /mnt/backup-cr
#1
[[ -d /mnt/backup-cr/daily.7 ]] && rm -rf /mnt/backup-cr/daily.7
#2
[[ -d /mnt/backup-cr/daily.6 ]] && mv /mnt/backup-cr/daily.6 /mnt/backup-cr/daily.7
[[ -d /mnt/backup-cr/daily.5 ]] && mv /mnt/backup-cr/daily.5 /mnt/backup-cr/daily.6
[[ -d /mnt/backup-cr/daily.4 ]] && mv /mnt/backup-cr/daily.4 /mnt/backup-cr/daily.5
[[ -d /mnt/backup-cr/daily.3 ]] && mv /mnt/backup-cr/daily.3 /mnt/backup-cr/daily.4
[[ -d /mnt/backup-cr/daily.2 ]] && mv /mnt/backup-cr/daily.2 /mnt/backup-cr/daily.3
[[ -d /mnt/backup-cr/daily.1 ]] && mv /mnt/backup-cr/daily.1 /mnt/backup-cr/daily.2
#3
[[ -d /mnt/backup-cr/daily.0 ]] && cp -al /mnt/backup-cr/daily.0 /mnt/backup-cr/daily.1
#4
bakdate=$(date +%Y%m%d%H%M)
/usr/bin/rsync -av 
        --stats 
        --delete 
        --human-readable 
        --log-file=/mnt/backup-cr/logs/rsync-cr.$bakdate.log 
        /share/cr/ 
        /mnt/backup-cr/daily.0 
MAILFILE=rsync-cr.$bakdate.log.tmp
echo "Subject: rsync-log for cr from srv" > $MAILFILE
echo "To: x@x.com" >> $MAILFILE
echo "From: y@y.com" >> $MAILFILE
echo "" >> $MAILFILE
/usr/bin/tail -13 /mnt/backup-cr/logs/rsync-cr.$bakdate.log >> $MAILFILE
echo "" >> $MAILFILE
echo "" >> $MAILFILE
cat $MAILFILE | ssmtp x@x.com
rm $MAILFILE

下面是我的crontab条目:

15 0 * * * /share/CACHEDEV1_DATA/.scripts/backup.sh

该脚本具有可执行标志,并且正如我所说的,同一文件夹中的其他脚本也可以工作。

有人有主意吗?因为如果这在QNAP上手动工作,并且在另一个UBUNTU服务器上也可以在crontab上工作,那么我想我变得愚蠢和偏执了:-)

  1. 使用echo从命令行

    将命令存储在crontab文件中

    $ echo "1 4 * * * /bin/sh /share/CACHEDEV1_DATA/your-backup-folder/backup.sh" >> /etc/config/crontab

此命令将运行backup.sh。

  • 要使crontab在重新启动期间持久化,必须执行以下命令

    $ crontab /etc/config/crontab

  • 请注意,您不能将脚本保存在/etc/或/bin/或硬盘目录以外的其他目录中。换句话说,始终将脚本保存在/share/CACHEDEV1_DATA/your-backup-folder中。如果不这样做,脚本将在重新启动时被删除。

  • 重启crontab

    $ /etc/init.d/crond.sh restart

  • 设置正确的权限

    chmod +x /share/CACHEDEV1_DATA/your-backup-folder/backup.sh

  • 等待cron运行,看看它是否工作

    完整指南,请访问:https://www.en0ch.se/qnap-and-cron/

    我通过使用sh命令调用脚本解决了类似的问题,如下所示:

    15 0 * * * /bin/sh /share/CACHEDEV1_DATA/.scripts/backup.sh
    

    编辑:sh命令必须以全路径(即/bin/sh)调用,否则将无法工作

    相关内容

    • 没有找到相关文章

    最新更新