LINUX.ORG.RU
ФорумAdmin

Бэкап. Ротация.


0

0

Есть скрипт для резервного копирования движка сайта и базы. [code] #!/bin/bash

user=root

pass=password

db=database1

count=0

max=11

dir=/backup

bkname=dump

now=$(date +%Y-%m-%d)

/usr/bin/mysqldump -u $user -p$pass $db | bzip2 > $dir/$bkname-$now.sql.bz2

tar zcf $dir/tracker-$bkname-$now.tar.gz site/[/code]

Скрипт у меня кроном раз в сутки исполняется. Как можно сделать так, чтобы файлы, добавленные более 10 дней назад автоматически удалялись с директории /backup . Пробовал прописывать - грызут сомнения по поводу своих доработок. Поэтому решил отписаться.

find . -mtime +10 -type f -name "*.gz" -delete

Удалит файлы *.gz старше 10 дней.

edigaryev ★★★★★
()

Можно посмотреть на logrotate

hc
()

find $dir/ -type f -ctime +240 -delete

leave ★★★★★
()

У меня храняться n последних, делается так:

function roll {
for i in `ls $BACKUPDIR|grep $1`; do
if (("`ls $BACKUPDIR|grep $1|wc -l`" > "$NUMBACKUPS")); then
rm $BACKUPDIR/$i
fi
done
}

За качество кода не отвечаю)

CyberTribe ★★
()
Ответ на: комментарий от zolden

Построчный комментарий:
1. объявляем функцию.
2. для всех элементов в листинге $BACKUPDIR отфильтрованном grep-ом по содержимому $1 (функция вызывается с переменной. типа roll etc, тогда $1 = etc)
3. если число элементов в листинге $BACKUPDIR отфильтрованном по $1 больше чем $NUMBACKUPS
4. Удаляем i-й элемент.
5. конец если
6. конец цикла
7. конец функции

Вообще можно обойтись без wc - grep умеет считать количество совпадений, но когда я это писал - был не в курсе)

CyberTribe ★★
()
Ответ на: комментарий от CyberTribe

хм... при политике имён, типа

MARK=`date +"%Y%m%d.%H%M%S"`;
filename="backup.$MARK.ext";
очень даже может быть... :)

Neksys ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.