Разностный бэкап каталогов в *nix системе

Скрипт для создания разностных резервных копий с использованием rsync

backup.sh — сам скрипт

переменная BACKUP_DIR — путь куда складывать бэкапы

файл backup_src.lst — список каталогов которые бэкапим

файл backup_include.lst — список расширений файлов, которые добавляем в бэкап (если он пуст то по умолчанию все, кроме обозначенных в backup_exclude.lst)

файл backup_exclude.lst — список расширений файлов, которые НЕ добавляем в бэкап.

Требует наличия установленного rsync

Скрипт писался и тестировался на FreeBSD 8.1 на других системах не тестировал, если протестируете на какой-нибудь другой системе — отпишитесь пожалуйста.

Немного отредактировал скрипт спасибо  awk за подсказку.

7 Comments

  1. awk

    Замени:

    FILES_SRC=/root/adm/backup_src.lst

    INCLUDE_FILES_PATTERN=/root/adm/backup_include.lst

    EXCLUDE_FILES_PATTERN=/root/adm/backup_exclude.lst

    на:

    ETC_DIR=/usr/local/

    FILES_SRC=$ETC_DIR/backup_src.lst

    INCLUDE_FILES_PATTERN=$ETC_DIR/backup_include.lst

    EXCLUDE_FILES_PATTERN=$ETC_DIR/backup_exclude.lst

    и будет супер… правда не тестил.

    Reply
  2. mozz

    Согласен, немного не оптимизировал код.

    Reply
  3. dfxi

    Пожалуйста, напишите комментарии для каждой команды скрипта.

    Reply
  4. mozz

    (3) Мне проще будет ответить на вопрос какой кусок кода непонятен. Если что-то непонятно — спрашивайте — отвечу.

    Reply
  5. agr

    Хорошо бы увидеть Ваш вариант для сетевого бекапа. Чтобы данные сохранялись на другом компьютере в сети.

    Reply
  6. agr

    На основании ващего скрипта, выполняю бэкап в сетевой каталог.

    # полный путь к вашему списку каталогов

    BACKUP_LST=/mnt/data/skript/backup/backup.list

    BACKUP_DIR=/home/user/data/nas

    #удаленный сервер

    BACKUP_SERVER=192.168.Х.ХХХ

    #пользователь удаленного сервера

    BACKUP_USER=user

    EXCLUDE_FILES_PATTERN=/mnt/data/skript/backup/backup.exclude

    for Res in `cat ${BACKUP_LST}`; do

    echo $Res

    ssh $BACKUP_USER@$BACKUP_SERVER mkdir -p $BACKUP_DIR$Res

    rsync -e ssh -avq $Res $BACKUP_USER@$BACKUP_SERVER:$BACKUP_DIR$Res \r

    —exclude-from=$EXCLUDE_FILES_PATTERN

    done

    Reply
  7. mozz

    (6) agr, а зачем строчка: ssh $BACKUP_USER@$BACKUP_SERVER mkdir -p $BACKUP_DIR$Res ?

    Разве rsync не создает каталог, если он не существует?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *