Создание инкрементального архива с помощью утилиты tar |
[исправить] |
В самом простом виде инкрементальный архив с помощью tar делается так:
tar --create --file=`date +%s`.tbz2 --bzip --listed-incremental=example.snar --verbose example/
Кратко:
tar -cvjg example.snar -f `date +%s`.tbz2 example/
Развертывается архив через распаковку всех составляющих архивов по очереди, от
самых старых к самым новым.
В простейшем случае так:
tar --extract --incremental --file level0.tar
tar --extract --incremental --file level1.tar
tar --extract --incremental --file level2.tar
Или, например, так:
for i in *.tbz2; do tar -xjGf "$i"; done;
Если нужно извлечь только конкретные каталоги из архива:
tar -xjGf levelX.tar --wildcards 'example/foo*' 'example/bar*'
При использовании следующего скрипта, архив нулевого уровня будет создаваться
раз в неделю или раз в месяц, в зависимости от того какая строка раскомментирована:
#!/bin/sh
SOURCE="$1"
test -d "$SOURCE" || exit 1
DEST_DIR=`date +%G-%V`; #weekly
#DEST_DIR=`date +%Y-%m`; #monthly
#DEST_DIR=`date +%Y`-$(( (`date +%m`-1)/3+1 )); #quarterly
mkdir -p $DEST_DIR;
shift;
tar --create "$@" --preserve-permissions --totals --bzip \
--file="$DEST_DIR"/`date +%F-%s`.tbz2 \
--listed-incremental="$DEST_DIR"/backup.snar \
--no-check-device --exclude-vcs \
--exclude-tag-under=access.log --exclude='*.log' \
--exclude-caches --exclude-tag-under=IGNORE.TAG "$SOURCE"
Проверить работу этого скрипта можно, например, так:
./backup.sh example/ -v
Для некоторых версий tar наблюдается крах при одновременном использовании
--exclude-caches и --exclude-tag=, в этом случае --exclude-caches можно
заменить на --exclude-tag=CACHEDIR.TAG.
|
|
|
|
Раздел: Корень / Администратору / Система / Диски и файлы / Резервное копирование |
1, adm (??), 08:09, 09/04/2010 [ответить]
| +/– |
я делаю через rsync, есть несколько преимуществ.
| |
|
4, Pilat (ok), 23:53, 11/04/2010 [^] [^^] [^^^] [ответить]
| +/– |
у rsync встроенный недостаток - получается не один файл, а миллион. Соответственно с миллионом файлов трудно работать при заливке на FTP, например, да и просто заархивировать сложно.
| |
|
2, adm (??), 08:34, 09/04/2010 [ответить]
| +/– |
вернее у tar-а только одно преимущество это если нужно сразу на ленту бекапить
| |
3, sHaggY_caT (ok), 11:16, 09/04/2010 [ответить]
| +/– |
Мы бэкапим gzip-ленный поток таром через ssh...
Инкрементальные копии это очень хорошо: и трафик и место очень экономятся :)
Может быть, кому-нибудь будет полезно, кусочек скрипта:
tar cfvz - --listed-incremental=$BASEDIR/var/all.snar -T $BASEDIR/tmp/$DATE.full_list.tmp \
| ssh -o StrictHostKeyChecking=no -l $LOGIN $REMOTEHOST "cat > $REMOTEDIR/data/$DATE.0.tgz" >>$BASEDIR/var/$DATE.0.remote.log 2>&1
echo "code res=" $? >>$BASEDIR/var/$DATE.0.remote.log 2>&1
Советую так же использовать keychain для управления ssh-ключами
| |
|