Top.Mail.Ru

[Linux] Автоматическое удаление старых файлов бэкапов

[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