Re: Re[2]: Offtop: чем резервируете данные на стораджах?

Ihalainen Nickolay ihanick на gmail.com
Вс Дек 27 02:20:13 MSK 2009


2009/12/27 Руслан Шарипов <ufaweb at gmail.com>:
> 27 декабря 2009 г. 2:55 пользователь Ihalainen Nickolay
> <ihanick at gmail.com> написал:
>> для бекапов картинок/музыки и другой статики великолепно подоходит
>> rsync с его инкрементальными бекапами, могу поделиться хорошим
>> скриптом.
>
> многие были бы Вам благодарны -)
справляется с несколькими сотнями гигабайт мелких картинок за 2-4
часа, бекап происходит параллельно со всех серверов, авторизация
rsync/ssh происходит по ключам
состоит из 2 частей:
скрипт на крон:
#!/bin/bash
BACKUP_ROOT=/backup
BACKUP_DIR=$BACKUP_ROOT/`date +%F`
LAST=`ls -rd $BACKUP_ROOT/200*|head -n1`
CUR=$BACKUP_DIR
[ $LAST = $CUR ] && exit 1;
mv $LAST $CUR
echo "`date` Backup $CUR last $LAST"
OPTS="--force --backup --backup-dir=$BACKUP_ROOT/incremental/`date
+%F` --ignore-errors --delete -az"
OPTS2="--force --backup --backup-dir=$BACKUP_ROOT/incremental/`date
+%F`-2 --ignore-errors --delete -az"
for i in `cat $BACKUP_ROOT/sources.list|grep -v '^#'|xargs`
do #echo -n $i
EXCLUDE=''
EXCLUDE_FILE=`echo $i|cut -d@ -f 2|tr '/' _|tr ':' _`.exclude
echo $BACKUP_ROOT/$EXCLUDE_FILE
[ -f $BACKUP_ROOT/$EXCLUDE_FILE ] && EXCLUDE="--exclude-from
$BACKUP_ROOT/$EXCLUDE_FILE"
rsync $OPTS $EXCLUDE -e ssh $i $BACKUP_DIR/  & echo "... first pass"
done
wait
### end of script
файла в котором содержатся пути
cat sources.list
/etc
backupuser at server1:/var/www
backupuser at server2:/usr/local/apache

файла с exclude для rsync
cat _etc
- /init.d
init.d

в папке BACKUP_ROOT всегда существует папка с самым последним бекапом
название - дата проведения бекапа
и папка incremental в которой находятся папки с датами: в них
изменённые/удалённые файлы и папки.

в опциях rsync также можно задать максимальную полосу, таким образом
снижается нагрузка на диски во время бекапа.

P.S. to raid-3,5,6: в последнее веремя есть партии жестких дисков (а в
покупном сервере все диски из одной партии) бывают случаи подыхания
всех дисков во время ребилда.
P.P.S. возможно из этого скрипта стоит сделать более универсальное
решение и выложить где-нибудь отдельным проектом. если, конешно это
нужно кому-то кроме меня.


Подробная информация о списке рассылки nginx-ru