Назад | Перейти на главную страницу

Автоматическое резервное копирование и удаление каталога проекта с помощью cronjob

Я пытаюсь создать резервную копию каталога, расположение: /mnt/project/ один раз в 24 часа, и другой каталог внутри родительского каталога, расположение: /mnt/project/uploadDocuments/ каждые 3 часа с помощью cronjob.

Ниже представлены сценарии: Резервное копирование приложения ежедневно в полночь.

#!/bin/bash
var=$(date '+%d-%b-%Y')
source=/mnt/project/
mkdir /root/Backup/"$var"
dest=/root/Backup/"$var"/
rootdest=/root/Backup/
rsync -atu $source $dest;

загружать резервную копию документов ежедневно каждые 3 часа

#!/bin/bash
var=$(date '+%d-%b-%Y')
source=/mnt/project/uploadDocuments/
dest=/root/Backup/"$var"/uploadDocuments/
rsync -atu $source $dest;

Вышеупомянутые сценарии хорошо справляются с резервным копированием каталога, но я не могу написать сценарий автоматического удаления, потому что резервные копии каталогов хранят ту же ссылку на временную метку ниже: Ссылка

Поскольку каталоги имеют одинаковую метку времени, я не могу использовать следующую команду для автоматического удаления каталогов старше, чем, скажем, 7 или 10 дней:

find $rootdest -mindepth 1 -maxdepth 1 -type d -ctime +10 | xargs rm -rf

Заранее спасибо.

Хех. Просто написал полный ответ, который сделал вещи более запутанными, чем они должны были быть. rsync является наиболее вероятным виновником здесь.

После Вас rsync, пытаться touching $dest. В rsync вероятно меняет метку времени на метку $source.

Что касается исправления тех, которые уже есть, вы можете настроить ctime с помощью debugfs, но вам понадобится диск демонтированный для этого (это невозможно, если у вас есть резервный диск в /root если ваш корневой каталог не смонтирован отдельно).

Скорее всего, это поможет:

debugfs -w -R "set_inode_field /root/Backup/$var ctime $(date +%s)" /dev/sdX

PS: запутанный ответ был потому, что я не видел rsync в первую очередь, и подумал, что что-то не так с назначением вашей системе ctime.