▪️ Исходные условия
Все бэкапы лежат в одном каталоге;
Имена содержат дату или время (важно для сортировки);
Нужно оставить, например, 7 последних копий.
🛠 Простой, но надежный скрипт
#!/bin/bash
BACKUP_DIR="/backups"
KEEP=7
cd "$BACKUP_DIR" || exit 1
ls -1t | tail -n +$((KEEP + 1)) | while read -r old_backup; do
echo "Удаляю старый бэкап: $old_backup"
rm -rf -- "$old_backup"
done
ls -1t- сортирует файлы по времени изменения (новые сверху)tail -n +$((KEEP + 1))- выбирает всё после N первыхrm -rf --- безопасно удаляет, даже если имя начинается с -
▪️ Полезные улучшения
Проверка без удаления:
ls -1t | tail -n +$((KEEP + 1))
Фильтрация только нужных бэкапов:
ls -1t backup-* | tail -n +$((KEEP + 1))
Логирование:
rm -rf -- "$old_backup" >> /var/log/backup-cleanup.log 2>&1
BashTex 📱 #bash #utils