Когда бэкапы копятся месяцами, место на диске неумолимо заканчивается. Сегодня рассмотрим процесс автоматизации процесса очистки старых резервных копий, чтобы всё важное сохранялось, а лишнее удалялось.
❓ Какую стратегию выбрать?
FIFO (First In, First Out) - удаление самых старых файлов
GFS (Grandfather-Father-Son) - оставляем дневные, недельные, месячные
По размеру диска - чистим, если занято > 80%
Я использую FIFO - удаление самых старых файлов, какую выбрать Вам - зависит от вас и конкретной задачи.
▪️ Удаляем файлы старше 7 дней в /backups/
find /backups/ -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;
▪️ Удаляем, если свободного места < 20%
if [[ $(df /backups --output=pcent | tail -1 | tr -d '% ') -gt 80 ]]; then
find /backups/ -type f -name "*.tar.gz" -mtime +3 -exec rm {} \;
fi
▪️ Оставляем 3 последние копии
ls -t /backups/*.tar.gz | tail -n +4 | xargs rm -f
▪️ Добавим выполнение скрипта раз в день:
0 2 * * * /usr/local/bin/cleanup_backups.sh
Не забудьте перед этим сделать cleanup_backups.sh исполняемым:
chmod +x cleanup_backups.sh
BashTex 📱 #bash #utils