backup.sh — сам скрипт
переменная BACKUP_DIR — путь куда складывать бэкапы
файл backup_src.lst — список каталогов которые бэкапим
файл backup_include.lst — список расширений файлов, которые добавляем в бэкап (если он пуст то по умолчанию все, кроме обозначенных в backup_exclude.lst)
файл backup_exclude.lst — список расширений файлов, которые НЕ добавляем в бэкап.
Требует наличия установленного rsync
Скрипт писался и тестировался на FreeBSD 8.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
и будет супер… правда не тестил.
Согласен, немного не оптимизировал код.
Пожалуйста, напишите комментарии для каждой команды скрипта.
(3) Мне проще будет ответить на вопрос какой кусок кода непонятен. Если что-то непонятно — спрашивайте — отвечу.
Хорошо бы увидеть Ваш вариант для сетевого бекапа. Чтобы данные сохранялись на другом компьютере в сети.
На основании ващего скрипта, выполняю бэкап в сетевой каталог.
# полный путь к вашему списку каталогов
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
(6) agr, а зачем строчка: ssh $BACKUP_USER@$BACKUP_SERVER mkdir -p $BACKUP_DIR$Res ?
Разве rsync не создает каталог, если он не существует?