Существует много решений в Linux по хранению бэкапов. Есть и готовые решения в виде программ, есть скрипты. Так уже получилось, что бэкапы складывать в определенную папку задача не сложная (архиватор + cron) но как следить чтобы архивы не плодились? Опять же, есть готовые решения, но я предпочитаю самому управлять процессом. Простой скрип на bash решает проблему удаления старых бэкапов. Например, когда надо, чтобы хранились последние 5 копий, удаляются самые старые файлы бэкапов, а 5 новых остается. Скрипт не блещет гениальными решениями, более того, я уверен, что это можно было сделать проще, но я как новичок в баше сделал это вот так:
#!/bin/bash
#Проверяем количество входных параметров
if [ $# -lt 3 ]
then
echo Something wrong with parameters
exit
fi
x=1 # Счетчик файлов
path=$1 # Путь к удаляемым файлам
filemask=$2 # маска файлов
keep=$3 # сколько файлов (бэкапов) надо оставлять
for i in `ls -t $path/$filemask`
do
if [ $x -le $keep ]
then
((x++))
continue
fi
rm $i
done
Запускаю этот скрипт в кроне раз в неделю, например, с такими параметрами:
/etc/rotate.sh /var/backup/ etc* 3
Это значит что самые старые файлы, начинающиеся с etc в папке /var/backup, кроме трёх самых свежих, будут удалены.