![[Linux] Автоматическое удаление старых файлов бэкапов](/images/post/cover/[Linux]-Автоматическое-удаление-старых-файлов-бэкапов-min.jpg)
[Linux] Автоматическое удаление старых файлов бэкапов
Автоматическое удаление старых резервных копий в Linux — настройка скрипта и cron
В данном видеоуроке мы дорабатываем скрипт резервного копирования PostgreSQL для автоматического удаления старых бэкапов.
Вы узнаете, как:
🔹 Добавить переменную для хранения времени хранения резервных копий
🔹 Настроить удаление файлов старше заданного времени с помощью команды find
🔹 Проверить работу скрипта с ускоренным временем удаления (минуты вместо дней)
🔹 Изменить расписание запуска скрипта через crontab для тестирования
🔹 Вернуть параметры на стабильный режим работы — ежедневное создание и удаление бэкапов
🔹 Применять аналогичный подход для очистки любых временных папок на сервере
Этот урок поможет вам автоматизировать управление резервными копиями и поддерживать порядок в файловой системе без лишних усилий.
⇓ Запись видеоурока во ВКонтакте ⇓
⇓ Запись видеоурока на RuTuBe ⇓
⇓ Запись видеоурока на YouTuBe ⇓
Теперь давайте доработаем скрипт, чтобы у нас выполнялось автоматическое удаление старых резервных копий
sudo nano /bin/backup_db_postgresql.sh
Добавим переменную со значением.
DAYS_TO_KEEP=7
и строчку проверки и удаления старых резервных копий
# Удаление старых бэкапов
find "$BACKUP_DIR" -name "${DB_NAME}_*" -mtime +$DAYS_TO_KEEP -delete
Но, чтобы проверить корректность данного скрипта, нам потребуется много времени, поэтому давайте сделаем так, изменим значение mtime на cmin, т.е. данный параметр будет находить файлы которые созданы более 7 минут.
А также изменим расписание запуска скрипта, на выполнение каждые 5 минут, чтобы проверить корректность работы скрипта.
sudo nano /etc/crontab
*/5 * * * * root /bin/backup_db_postgresql.sh >> /1CBase/backup_db_postgresql.log 2>&1
Таким образом, у нас должно получиться следующее, каждые 5 минут создается резервная копия, а все, которые старше 7 минут удаляются, т.е. остается только что созданная и та, которая была создана 5 минут назад, которая была создана уже 10 минут назад и позднее удаляется автоматически.
Проверяем, да, все работает корректно.
Аналогичным образом можно удалять любые файлы, допустим какая-нибудь файловая помойка куда пользователи скидывают все подряд. Но, следует их заранее предупредить, что через 7 дней все файлы от туда удаляются, чтобы они их сразу забирали себе.
Теперь возвращаем обратно параметры удаления и периодичность запуска скрипта:
sudo nano /bin/backup_db_postgresql.sh
find "$BACKUP_DIR" -name "${DB_NAME}_*" -mtime +$DAYS_TO_KEEP -delete
sudo nano /etc/crontab
0 3 * * * root /bin/backup_db_postgresql.sh >> /1CBase/backup_db_postgresql.log 2>&1