定时任务

定时任务

定时任务

我正在将 rsnapshot 与 cron 一起使用。这就是sudo crontab -l我所看到的。

0 */4           * * *   /usr/bin/rsnapshot hourly
30 3    * * *           /usr/bin/rsnapshot daily
0  3    * * 1           /usr/bin/rsnapshot weekly

输出

我去检查备份文件夹以查看一切是否正常工作,但这是按时间排序的输出:

elijah@degas:~$ ls -lt /media/backup/
total 0
drwxrwxrwx 1 root root 0 May 30 04:00 hourly.1
drwxrwxrwx 1 root root 0 May 23 04:00 hourly.2
drwxrwxrwx 1 root root 0 May 17 04:00 hourly.3
drwxrwxrwx 1 root root 0 May 14 04:00 hourly.4
drwxrwxrwx 1 root root 0 May 13 04:00 hourly.5
drwxrwxrwx 1 root root 0 May 12 04:00 daily.0
drwxrwxrwx 1 root root 0 May 10 04:00 daily.1
drwxrwxrwx 1 root root 0 May  7 04:00 daily.2
drwxrwxrwx 1 root root 0 May  4 04:00 daily.3
drwxrwxrwx 1 root root 0 Apr 29 16:00 daily.4
drwxrwxrwx 1 root root 0 Apr 28 20:00 daily.5
drwxrwxrwx 1 root root 0 Apr 28 16:04 hourly.0
drwxrwxrwx 1 root root 0 Apr 28 12:21 daily.6
drwxrwxrwx 1 root root 0 Apr 27 10:09 weekly.1
drwxrwxrwx 1 root root 0 Apr 25 07:23 weekly.3

输出看起来几乎是随机的!为什么会发生这种情况?我以为另一台机器上的配置是相同的,而且似乎运行正常。

系统日志

elijah@degas:~$ cat /var/log/syslog.1 | grep cron
Jun 20 07:40:21 degas anacron[2795]: Job `cron.daily' terminated
Jun 20 07:40:21 degas anacron[2795]: Normal exit (1 job run)
Jun 20 08:17:01 degas CRON[3144]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 09:17:01 degas CRON[3228]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 10:17:01 degas CRON[4893]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 11:17:01 degas CRON[8737]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 12:17:01 degas CRON[10192]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 13:17:01 degas CRON[11870]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 14:17:01 degas CRON[12829]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 15:17:01 degas CRON[13614]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 15:54:28 degas crontab[14446]: (root) BEGIN EDIT (root)
Jun 20 15:55:27 degas crontab[14446]: (root) END EDIT (root)
Jun 20 15:55:29 degas crontab[14460]: (root) LIST (root)
Jun 20 16:17:01 degas CRON[14770]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 16:44:04 degas crontab[14911]: (root) DELETE (root)
Jun 20 16:44:07 degas crontab[14913]: (root) LIST (root)
Jun 20 17:17:01 degas CRON[15713]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 18:17:01 degas CRON[15842]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 19:17:01 degas CRON[15928]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 20:17:01 degas CRON[16023]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 21:17:01 degas CRON[16110]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 22:17:01 degas CRON[16212]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 20 23:17:01 degas CRON[16300]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 00:00:01 degas CRON[16372]: (root) CMD (invoke-rc.d atop _cron)
Jun 21 00:17:01 degas CRON[16437]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 01:17:01 degas CRON[16525]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 02:17:01 degas CRON[16612]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 03:17:01 degas CRON[16701]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 04:17:01 degas CRON[16798]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 05:17:01 degas CRON[16886]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 06:17:01 degas CRON[16974]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 06:25:01 degas CRON[16988]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Jun 21 07:17:01 degas CRON[17061]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 21 07:30:01 degas CRON[17083]: (root) CMD (start -q anacron || :)
Jun 21 07:30:01 degas anacron[17086]: Anacron 2.3 started on 2016-06-21
Jun 21 07:30:01 degas anacron[17086]: Will run job `cron.daily' in 5 min.
Jun 21 07:30:01 degas anacron[17086]: Jobs will be executed sequentially
Jun 21 07:35:01 degas anacron[17086]: Job `cron.daily' started
Jun 21 07:35:01 degas anacron[17099]: Updated timestamp for job `cron.daily' to 2016-06-21

快照测试

elijah@degas:~$ /usr/bin/rsnapshot -t hourly
echo 23633 > /var/run/rsnapshot.pid 
/bin/rm -rf /media/backup/hourly.5/ 
mv /media/backup/hourly.4/ /media/backup/hourly.5/ 
mv /media/backup/hourly.3/ /media/backup/hourly.4/ 
mv /media/backup/hourly.2/ /media/backup/hourly.3/ 
mv /media/backup/hourly.1/ /media/backup/hourly.2/ 
/bin/cp -al /media/backup/hourly.0 /media/backup/hourly.1 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    --exclude=/var/ --exclude=/space/ --exclude=/nfs/ --exclude=/media/ \
    --exclude=/proc/ --exclude=/sys/ --exclude=/dev/ --exclude=/tmp/ \
    --exclude=/cdrom/ --exclude=media/backup /. \
    /media/backup/hourly.0/Backup 
touch /media/backup/hourly.0/ 

答案1

此原始建议仅适用于基于 Debian 的发行版:

您显示的两个crontab片段并不相同crontab。因此,您的作业运行两次(一次来自/etc/cron.d/rsnapshot,一次来自crontab -l)。

删除一组,例如使用sudo crontab -r,它将开始正常工作。


下一个建议是确保未sync_first设置/etc/rsnapshot.conf文件中。 (或者如果是,那就是0。)否则,虽然会发生 rsnapshot 目录的循环,但如果没有明确的rsnapshot sync命令,实际上不会进行备份。

答案2

经过一些扩展讨论看来文件系统可能已损坏。例如,rm -rf作为根用户在正常的文件树上失败。

卸载文件系统后,fsck将其识别为 NTFS。

令人沮丧的是,我看到 NTFS 在其他基于 Linux 的平台上因rsnapshot.没有任何足够可重复的错误可以提交,但一周的时间rsnapshots通常会损坏文件系统。

我的建议是将 NTFS 文件系统替换为基于 Linux 的系统本机的文件系统,例如 ext4。顺便说一句,如果必须从 Windows 平台访问备份,我已经很好地利用了extN 文件系统的 Ext2FSD 实用程序和驱动程序(也在来源锻造)。

相关内容