Простая схема резервирования состоит в том, чтобы все сохранить однажды, а затем резервировать все что изменилось, начиная с предыдущей копии. Первая копия называется полной (full backup), последующие инкрементными (incremental backups). Полная копия часто не помещается целиком на ленту (или дискету). Восстановление из инкрементных копий может потребовать во много раз большего количество работы, чем из полного. Восстановление может быть оптимизировано так, чтобы Вы всегда резервировали все, начиная с предыдущей полной копии; этот путь требует немного больше работы, но никогда не будет потребности восстановить больше, чем полную и одну инкрементную копию.
Если Вы хотите делать копии ежедневно и иметь шесть лент, Вы могли бы использовать ленту 1 для первой полной копии (скажем, в пятницу) и ленты со 2 по 5 для инкрементных копий (понедельник-четверг). Затем Вы делаете новую полную копию на ленте 6 (вторая пятница), и снова начинаете делать инкрементные копии на лентах 2-5. Вы не хотите перезаписывать ленту 1, пока вы не имеете новую полную копию, чтобы ничего страшного не произошло в то время, пока вы делаете новую полную копию. После того, как вы сделали полную копию на ленте 6, Вы можете хранить ленту 1 где-нибудь еще на случай разрушения ваших других резервных лент. Когда Вы должны сделать следующую полную копию, Вы выбираете и используете ленту 1.
Если Вы имеете больше чем шесть лент, Вы можете использовать дополнительное место для полных копий. Каждый раз, когда Вы делаете полную копию, Вы используете самую старую ленту. Этим путем Вы можете иметь полные копии за несколько предыдущих недель, что хорошо, если Вы хотите найти старый, теперь удаленный файл, или старую версию файла.
Полная копия может легко быть сделана командой tar:
# tar --create --file /dev/ftape /usr/src
tar: Removing leading / from absolute path names in the archive
#
Пример выше использует GNU версию tar и длинные имена
опции. Традиционная версия tar понимает только
одиночный символ в качестве парамета. GNU версия может также обрабатывать
копии, которые не помещаются на одной ленте или дискете, и очень длинные
пути; не все традиционные версии могут делать это. Linux использует только
GNU tar.
Если ваша копия не помещается на одной ленте, Вы должны использовать
опцию --multi-volume (-M):
# tar -cMf /dev/fd0H1440 /usr/src
tar: Removing leading / from absolute path names in the archive
Prepare volume #2 for /dev/fd0H1440 and hit return:
#
Обратите внимание, что Вы должны форматировать дискеты прежде, чем Вы
начнете копирование. Можно использовать другое окно или виртуальный терминал
для выполнения команд форматирования, когда tar
попросит новую дискету.
После того, как вы сделали копию, Вы должны ее проверить, используя
опцию --compare (-d):
# tar --compare --verbose -f /dev/ftape
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
....
#
Невыполнение проверки копии означает, что Вы не заметите, что ваша
копия не работает, пока не потеряете первоначальные данные.
Инкрементная копия может быть выполнена командой tar
с опцией --newer (-N):
# tar --create --newer '8 Sep 1995' --file /dev/ftape /usr/src --verbose
tar: Removing leading / from absolute path names in the archive
usr/src/
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/modules/
usr/src/linux-1.2.10-includes/include/asm-generic/
usr/src/linux-1.2.10-includes/include/asm-i386/
usr/src/linux-1.2.10-includes/include/asm-mips/
usr/src/linux-1.2.10-includes/include/asm-alpha/
usr/src/linux-1.2.10-includes/include/asm-m68k/
usr/src/linux-1.2.10-includes/include/asm-sparc/
usr/src/patch-1.2.11.gz
#
К сожалению, tar не может обнаружить изменение Inode
информации файла, например, изменение прав доступа или переименование файла.
Проблема решается путем использования команды find и
сравнения текущего состояния файловой системы со списками файлов, которые
резервировались раньше. Скрипты и программы для автоматизации такого процесса
можно найти на ftp-серверах, посвященных Linux.
Команда tar с опцией --extract
(-x) извлекает файлы:
# tar --extract --same-permissions --verbose --file /dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#
Вы также можете извлечь только указанные файлы или каталоги (которые включают
все их файлы и подкаталоги),перечислив их в командной строке:
# tar xpvf /dev/fd0H1440 usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
#
Используйте опцию --list (-t),
если Вы хотите только увидеть какие файлы находятся на резервном томе:
# tar --list --file /dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#
Обратите внимание, что tar всегда читает резервный том
последовательно, так для больших томов процесс довольно медленный. Однако,
нельзя использовать произвольный доступ, когда используется лента или
некоторая другая последовательная среда.
tar не обрабатывает удаленные файлы правильно. Если Вы должны восстановить файловую систему из полной и инкрементной копии, и удалили файл между изготовлением копий, он будет существовать снова после того, как Вы сделаете восстановление. Это может быть большой проблемой, если файл хранит важные данные, которые больше не должны быть доступны.