Я пишу команду для cron
автоматического резервного копирования моей флешки.
Я использую tar ... -N <some date>
для создания резервной копии.
Проблема в том, как написать команду, которая выдаст мне правильную дату.
Дляеженедельное резервное копированиеЯ думал о:
date -d '1 week ago' +%Y%m%d
date -d 'monday week ago' +%Y%m%d
Но все становится сложнее, когда мой ноутбук выключен в запланированное cron время (понедельник после). Допустим, anacron заберет задание во вторник. С первым вариантом я пропускаю все изменения с предыдущего понедельника. Второй вариант пропускает всю предыдущую неделю. то же самое,
date -d 'monday 1 week ago' +%Y%m%d
что и date -d 'monday week ago' +%Y%m%d
date -d 'monday 2 week ago' +%Y%m%d
правильно в случае, когда резервная копия создается anacron, но у него есть одна дополнительная неделя в (обычном случае) cron.
Есть идеи, как сделать время резервного копирования совместимым с anacron?
решение1
Вот идея: каждый раз, когда запускается резервное копирование, скрипт резервного копирования записывает текущую дату, touch
ing в файл. В следующий раз, когда запускается резервное копирование, оно использует файл datestamp предыдущей резервной копии в качестве аргумента для tar -N
. Например, в скрипте оболочки логика может выглядеть так:
# Begin the latest backup run now.
touch /backups/new-backup-time
tar -N /backups/prev-backup-time -c ... ...
# Save the latest backup time for the next run.
mv /backups/new-backup-time /backups/prev-backup-time
Это зависит от того, что tar -N
параметр может быть либо датой, либо путем к файлу, время изменения данных которого указывает на дату.