Lonely Dreamer (sanmai) wrote,
Lonely Dreamer
sanmai

tar --listed-incremental

В самом простом виде инкрементальный архив с помощью 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*'

Cкрипт для бекапа по неделям или месяцам

При использовании следующего скрипта, архив нулевого уровня будет создаваться раз в неделю или раз в месяц, в зависимости от того какая строка раскомментирована:
#!/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.

Читайте также:
Using tar to Perform Incremental Dumps
Tags: backup, linux, tar, useful
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments