Полезное:


Главная / How-To / SysAdmin / Инкрементальный бэкап (incremental backup)
Инкрементальный бэкап (incremental backup)

Этот скрипт бэкапит каталоги файловой системы описанные в файле FILES_SRC, исключая шаблоны описанные в файле EXCLUDE_FILES_PATTERN, но включая шаблоны из файла INCLUDE_FILES_PATTERN. Файлы синхронизируются в каталог BACKUP_DIR. Старые изменившиеся и удаленные файлы копируются в каталог, с текущей датой месяца. То есть можно откопать все изменения файлов за любой из 30 последних дней.

Точно так же в каталог BACKUP_DB_DIR бэкапится база данных mysql с 30-дневной ротацией по дням.

Скрипт запускается по cron 1 раз в день.
[root@www adm]# cat /root/adm/backup.sh

#!/bin/sh
# cron: 0 3 * * * root /root/adm/backup.sh

BACKUP_DIR=/backup/fs

FILES_SRC=/root/adm/backup_src.lst
INCLUDE_FILES_PATTERN=/root/adm/backup_include.lst
EXCLUDE_FILES_PATTERN=/root/adm/backup_exclude.lst

BACKUP_DB_DIR=/backup/db
DB_BACKUP_PREFIX=db

MYSQL_HOST=localhost
MYSQL_USER=user
MYSQL_PASSWD=password

TIMESTAMP=`date '+%Y%m%d-%H%M%S'`
DAY=`date '+%d'`

FULL_BACKUP_DIR=$BACKUP_DIR/current
INC_BACKUP_DIR=$BACKUP_DIR/$DAY\_$TIMESTAMP

rm -f -R $BACKUP_DIR/$DAY\_*

nice -n 10 rsync -r --force --ignore-errors --delete --delete-excluded -av  \
  --backup --backup-dir=$INC_BACKUP_DIR \
  --exclude-from=$EXCLUDE_FILES_PATTERN \
  --include-from=$INCLUDE_FILES_PATTERN \
  --files-from=$FILES_SRC \
  / $FULL_BACKUP_DIR

rm -f $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_$DAY\_*

nice -n 10 /usr/bin/mysqldump --complete-insert --all-databases --force --all --add-drop-table \
  --host=$MYSQL_HOST \
  --password=$MYSQL_PASSWD \
  --user=$MYSQL_USER \
  | gzip >$BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_$DAY\_$TIMESTAMP.gz

nice -n 10 /usr/bin/mysqldump --complete-insert --all-databases --force --no-data --all --add-drop-table \
  --host=$MYSQL_HOST \
  --password=$MYSQL_PASSWD \
  --user=$MYSQL_USER \
  | gzip >$BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_$DAY\_struct\_$TIMESTAMP.gz

rm -f $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_current*

ln -s $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_$DAY\_$TIMESTAMP.gz $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_current.gz
ln -s $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_$DAY\_struct\_$TIMESTAMP.gz $BACKUP_DB_DIR/$DB_BACKUP_PREFIX\_current\_struct.gz

rm -f $BACKUP_DIR/current\_*.tar.gz

cd $BACKUP_DIR
nice -n 10 tar -zcf $BACKUP_DIR/current\_$TIMESTAMP.tar.gz *
[root@www adm]# cat /root/adm/backup_src.lst 
/etc
/home
[root@www adm]# cat /root/adm/backup_exclude.lst 
*.log
*.rpm
*access_log*
*_log*
*.tar.gz
*.tar.bz2
*.run

Добавлено: 2009/01/28
Обновлено: 2009/02/19

Навигация
Обо мне | Портфолио | How-To | Мои ссылки | Фотоальбом | Смешно! | Контакты Адрес: Россия, Владивосток
Тел.: +7 (4232) 51-84-81