скрипт:
#!/bin/sh
MAIN_DIR="/opt/backup"
WORK_DIR="/usr/local/backup"
[ -z "$1" ] && exit 1
BACKUP_TYPE=$1; shift
IP_FROM_BACKUP=$1; shift
LIST_BACKUPS=$@
BACKUP_TIME_DIR=manually_`date +%Y-%m-%d_%H:%M:%S`
if [ "$BACKUP_TYPE" = "hourly" ]; then
BACKUP_TIME_DIR=hourly_`date +%Y-%m-%d_%H:%M`
elif [ "$BACKUP_TYPE" = "daily" ]; then
BACKUP_TIME_DIR=daily_`date +%Y-%m-%d`
fi
[ -z "BACKUP_TIME_DIR" ] && exit 1
RSYNC_OPTS="-azc --delete --ignore-errors --force --backup --backup-dir=../"${BACKUP_TIME_DIR}
# ------------------------------------------------------------------------------
[ ! -d ${MAIN_DIR}/${IP_FROM_BACKUP} ] && \
mkdir -p ${MAIN_DIR}/${IP_FROM_BACKUP} || \
touch ${MAIN_DIR}/${IP_FROM_BACKUP}
for bckp in $LIST_BACKUPS; do
[ ! -d ${MAIN_DIR}/${IP_FROM_BACKUP}/${bckp}/root ] && \
mkdir -p ${MAIN_DIR}/${IP_FROM_BACKUP}/${bckp}/root || \
touch ${MAIN_DIR}/${IP_FROM_BACKUP}/${bckp}/root
EXCL_OPT=""
[ -f ${WORK_DIR}/${IP_FROM_BACKUP}/exclude-${bckp} ] && EXCL_OPT="--exclude-from="${WORK_DIR}/${IP_FROM_BACKUP}/exclude-
rsync ${RSYNC_OPTS} ${EXCL_OPT} ${IP_FROM_BACKUP}::${bckp} ${MAIN_DIR}/${IP_FROM_BACKUP}/${bckp}/root
done
Использование: /путь/к/скрипту/backup.sh ...
где - тип бэкапа (manually,hourly, daily)
- это IP-адрес компа, с которого брать бэкап
, , ... - это области, разрешённые для синхронизации rsync-сервером.
Необходимые условия: на компах, с которых брать бэкап, должен быть запущен rsync-сервер. Пускается так:
/etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon -v
log_on_failure += USERID
}
list = no use chroot = yes log file = /var/log/rsync.log hosts allow = [BCP1] path = /path/to/some/dir uid = root gid = root read only = true comment = backup service max connections = 2
Re: Инкрементальный backup #1
Не столь обширный и мощный скрипт, но тоже может пригодиться. Бэкапит текущую директорию, если не указан аргумент путь_к_директории. Сохраняет архивы в виде -backup-$(date +%m-%d-%Y).tar.gz в папке, которую архивировали. Печатает помощь по аргументу -h или --help
Когда ты всматриваешься в бездну, бездна всматривается в тебя.
Все, что мы делаем сейчас, отзовется эхом в вечности.
Какое зло прячется в отражении твоей души...
Re: Инкрементальный backup #2
Мой скрипт делает полную резервную копию в воскресенье, а в остальные дни diffы:
#!/bin/bash day=`date +%w` pushd $1/$2/ if [ "$day" == "0" ]; then rsync -azc $1:/$2 0/ tar c 0 | bzip2 -c -9 > `date +%d.%m.%Y`.tar.bz2 else mkdir $day -p rsync -azc 0/ $day/ rsync -azc $1:/$2 $day/ diff 0 $day | bzip2 -c -9 > `date +%d.%m.%Y`.diff.bz2 fi popdК сожалению скрипт очень прожорливый по дисковому пространству!
) совершенствованию?
Есть ли у кого-нибудь идеи по его(скрипта
Re: Инкрементальный backup #3
А, может, сносить бэкапы двухнедельной давности или около того?
Когда ты всматриваешься в бездну, бездна всматривается в тебя.
Все, что мы делаем сейчас, отзовется эхом в вечности.
Какое зло прячется в отражении твоей души...
Re: Инкрементальный backup #4
Старые backupы удаляются. Суть в том, что данные хранятся в двойном комплекте!
Re: Инкрементальный backup #5
Имхо, но использовать rsync небезопасно! (равно как и rcp). Лучше либо использовать scp либо устанавливать ssh-соединение и внутри него делать почти всё, что хочется. Впринципе, самом rsync можно заставить использовать ssh (присер в man rsync).
А если вы будете просто использовать rsync внутри небезопасной сети, то ваши данные будут как минимум перехвачены, а в принципе возможен и взлом системы. Я, например, нахожусь в агрессивном сетевом окружении
Per aspera ad astra!
Re: Инкрементальный backup #6
Современный rsync внутри shh пускается по умолчанию