Установка ежедневных резервных копий на ноутбуке с cron/anacron 16.10
У меня есть похожие вопросы к путанице с cron и anacron (настройка расписания резервного копирования для rsnapshot), но там тоже не было ответа.
проблема
Моя проблема в том, чтобы ежедневно выполнять резервное копирование на ноутбуке. Итак, моей первой идеей было установить его в crontab
лайк
$ crontab -e
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# I guess as user I have no access to /var/log from this crontab, do I?
@daily ~/my-backups.sh >> ~/.log/my-backup.log
а затем сценарий my-backups.sh
должен бегать каждый день в полночь (0 0 * * *
), право?
Хорошо, и после прочтения документации я узнал об анакроне. Но тогда возникает проблема, поскольку скрипт не запускается. Из документации я понимаю, что если компьютер был выключен, когда ежедневная рутина должна была выполняться cron
затем anacron
должен запустить его при запуске. Но этого тоже не происходит.
Нужно ли делать другую настройку? (Из документации я предположил, что она не нужна и что она должна работать из коробки, но этого не происходит.)
Вопрос
Как настроить cron/anacron для выполнения ежедневного сценария, и если компьютер был выключен во время выполнения, он должен запускать сценарий при запуске или через некоторое время после запуска.
Использование версии cron.daily
Я изменил свой скрипт резервного копирования, изменив на cron.daily
как предложено. Мой тестовый скрипт:
#!/bin/bash
date +%Y-%m-%d >> /var/log/backup.log
Затем добавьте его в /etc/cron.daily
как символическая ссылка
sudo ln -s ~/bin/my-backup /etc/cron.daily/backup
Я проверил, и у сценария, и у символической ссылки есть разрешения на выполнение.
Затем, сегодня, я начал свою машину около 9, и первые записи на /var/log/syslog
около того времени, но нет никаких признаков cron.daily
там.
$ cat /var/log/syslog | grep cron
Feb 16 09:05:15 box cron[981]: (CRON) INFO (pidfile fd = 3)
Feb 16 09:05:15 box cron[981]: (CRON) INFO (Running @reboot jobs)
Feb 16 09:17:01 box CRON[4574]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 10:17:01 box CRON[6453]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 11:17:01 box CRON[6878]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 12:17:01 box CRON[7310]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 13:14:01 box CRON[7582]: (root) CMD ( test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Feb 16 13:17:01 box CRON[7595]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 14:17:02 box CRON[8134]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Кроме того, последний раз казненный анакрон был вчера
$ sudo cat /var/spool/anacron/cron.daily
20170215
И я проверяю, и мой сценарий указан в cron.daily
$ run-parts --test --report /etc/cron.daily
/etc/cron.daily/0anacron
/etc/cron.daily/apport
/etc/cron.daily/apt-compat
/etc/cron.daily/backup
/etc/cron.daily/bsdmainutils
/etc/cron.daily/cracklib-runtime
/etc/cron.daily/dpkg
/etc/cron.daily/google-chrome
/etc/cron.daily/google-talkplugin
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/mlocate
/etc/cron.daily/passwd
/etc/cron.daily/popularity-contest
/etc/cron.daily/update-notifier-common
/etc/cron.daily/upstart
1 ответ
Поместите свой скрипт в /etc/cron.daily
и вы получите именно то, что вы хотели.