Разностный бэкап каталогов в *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 не будет опубликован. Обязательные поля помечены *