Программа обработки архивов tar

Выполнение резервного копирования и обновления файлов

.* дамп
. + что такое дамп
. + разные уровни дампа
. - полный дамп = дамп всего
. - дамп уровня 1, 2 и т.д.
Уровень дампа n дампирует все измененное с уровня n-1
. + как использовать сценарии для дампа
. _ сценарии для выполнения после редактирования задания резервного
копирования (подробности)
. + Задания резервного копирования, что это такое


. - как настроить
. - точный текст сценария [/sp/dump/backup-specs]


. + Проблемы
. - rsh не работает
. - rtape не устанавливается
. - (другие?)
. + опция tar --imcremental
. + ленты
. - защита записи
. - типы носителей
. : размеры и виды, используемые для разных целей
. - файлы и ленточные метки
одна метка между файлами, две в конце
. - распололжение ленты
MT записывает две метки в конец, при записи одна из них стирается
- 152 -
Произвести резервное копирование системы - значит создать архивы,
содержащие все файлы системы файлов. Эти архивы можно затем
использовать для обновления нескольких или всех из этих файлов
(например, если диск ломается или файл случайно стирается). Резервные
копии систем файлов еще называются дампами.
9.1 Использование tar для выполнения полных дампов *
Полные дампы можно делать только тогда, когда другие люди или
программы не модифицируют файлы системы файлов. Если файлы
модифицируются, когда tar производит резервное копирование, их нельзя
сохранить в архиве, в этом случае вы бы не смогли их обновить, если бы
вам это понадобилось. (Немодифицированные файлы записываютсмя без
труда и не разрушают архив.)
Вы можете захотеть использовать опцию '--label=архивная_метка' для
того, чтобы дать архиву метку тома, так что вы можете сказать, каков
архив, даже если его метка выпала с ленты или случилось что-то в этом
роде.
Если вы не уверены, что система, которую вы дампируете, помещается в
одном томе, используйте опцию '--multi-volume'. Убедитесь, что у вас
на руках достаточно ленты для завершения резервного копирования.
Если вы хотите дампировать каждую систему файлов отдельно, вам нужна
опция '--one-file-system' ('-l'), для предохранения tar от пересечения
границ системы файлов при сохранении (под)каталогов.
В опции '--incremental' ('-G') нет необходимости, т.к. есть полная
копия всего в системе файлов, и полное восстановление из резервной
копии может быть произведено только на полностью пустой диск.
Если вы не торопитесь и доверяете программе tar (и вашим


лентам), очень удобно использовать опцию '--verify' чтобы убедиться,
что ваши файлы действительно дампированы. Это также определит случаи,
когда файл был модифицирован при архивации. К сожалению, не все
устройства (в том числе и картриджи) можно проверить.
- 153 -
'--listed-incremental=snapshot-файл' всегда требует аргумента имени
файла. Если файл не существует, установите нулевой уровень дампа,
создающий файл. Если файл существует, используйте этот файл для того,
чтобы увидеть, что изменилось.
'--incremental' ('-G')
FIXME: просмотреть это
'--incremental' работает с пошаговым резервным копированием старого
формата GNU.
Эта опция должна использоваться только при создании пошаговой
резервной копии системы файлов. При использовании опции
'--incremental' tar записывает в начале архива элемент для каждого
каталога, которым нужно оперировать. Элемент для каталога включает
список файлов каталога во время завершения дампирования и флаг для
каждого файла, показывающий, нужно ли его помещать в архив. Информация
используется при осуществлении полного пошагового обновления.
Заметьте, что эта опция заставляет tar создавать нестандартный
архив, который нельзя прочесть не-GNU версиями программы tar.
Если опция '--incremental' используется с '--list', то tar для
каждого каталога архива выдает список его файлов на время создания
архива. Эта информация подается в формате, в котором нелегко читать,
но который зато не является неоднозначным для программы: каждому файлу
предшествует 'Y', если этот файл присутствует в архиве, 'N', если файл
не включен в архив или 'D', если файл - каталог (и включается в
архив). Каждое имя файла заканчивается нулем. За последним файлом
следует дополнительный нуль и чистая строка, показывающие конец данных.
Если опция '--incremental' используется с '--extract', то когда
находится элемент каталога, все файлы, существующие в каталоге, но не
записанные в список архива, удаляются из каталога.
Это удобно, когда вы восстанавливаете поврежденную систему файлов из


- 154 -
пошаговой резевной копии: это сохраняет состояние системы файов тем,
которое получено после резервного копирования. Если вы не используете
'--incremental', система файлов, вероятно, наполнится файлами, которые
не должны больше существовать.
'--listed-incremental=snapshot-файл' работает с резервным
копированием формата GNU.
'--listed-incremental=snapshot-файл' действует как '--incremental',
но при использовании в сочетании с '--create' также заставляет tar
использовать файл "файл", содержащий информацию о состоянии системы
файлов во время последнего резервного копирования, чтобы определить,
какие файлы включить в создаваемый архив. Затем файл модифицируется
tar. Если файл "файл" не существует при задании этой опции, tar его
создает и включает все соответствующие файлы в архив.
Файл, являющийся независимым архивом, содержит дату своей последней
модификации, номер, список устройств и имена каталогов. tar архивирует
файлы с более поздней датой модификации или измененным временем,
каталоги с неизмененным номером и устройством, но измененным именем.
Файл модифицируется после того, как определяются файлы, подлежащие
архивированию, но перед тем, как создан новый архив.
9.2 Использование tar для выполнения пошагового дампа *
Выполнение пошагового дампа похоже на выполнение полного дампа, хотя
здесь обычно нужно больше опций.
Вам может понадобиться использовать опцию '-M' для приказа tar
хранить только те файлы, которые были модифицированы после указанного
date. date - дата и время последнего полного/пошагового резервного
копирования.
Стандартная схема - производить ежемесячный (полный) дамп - раз в
месяц, еженедельный дамп - раз в неделю.
Ниже приведена копия сценария, ичпользуемого для дампирования систем
- 155 -
файлов на машинах Free Software Foundation. Этот сценарий выполняется
через cron поздно ночью, , когда люди меньше любят сидеть за машинами.
Этот сценарий дампирует несколько систем файлов с нескольких машин


(через NFS). Оператор должен убедиться, что все машины завершили
работу ко времени, когда происходит дамп. Если машина ничего не
выполняет, ее файлы не дампируются и пошаговый дамп следующего дня не
сохраняет файлы, которые приходят для дампа.
#!/bin/csh
# Dump thingie
set now = 'date'
set then = ''cat date.nfs.dump'
/u/hack/bin/tar -c -G -v\
-f /dev/rtu20\
-b 126\
-N "$then"\
-V "Dump from $then to $now"\
/alpha-bits/gp\
/gnu/hack\
/hobbes/u\
/spiff/u\
/sugar-bombs/u
echo $now > date.nfs.dump
mt -f /dev/rtu20 rew
Вывод из этого сценария хранится в файле для того, чтобы оператор
позже мог его прочесть.
Этот сценарий использует файл 'date.nfs.dump' для хранения
даты/времени последнего дампа.
Т.к. это поточное ленточное устройство, не делается попыток
проверять архив. Это также объясняет высокий блочный фактор. Ленточное
устройство быть перемотано с помощью команды mt после того, как
произведен ламп.
9.3 Пошаговые опции *
- 156 -
'--incremental' ('-G') используется в сочетании с '--create',
'extract' или '--list' при резервном копировании и обновлении системы
файлов. Архив нельзя извлечь, и нельзя составить список его членов с
помощью опции '--incremental', если он был создан не с помощью опции.
Эта опция должна использоваться только сценарием, а не пользователем,
и обычно безотносительно к опции '--listed-incremental=snapshot-файл',
которая описывается ниже.
'--incremental' в сочетании с '--create' заставляет tar записывать в
начало архива элемент каждого каталога, который будет архивироваться.
Элемент для каталога включает список всех файлов каталога во время,
когда архив создан, и флаг для каждого файла, показывающий, нужно ли
его заносить в архив.
Заметьте, что эта опция заставляет tar создавать нестандартный
архив, который нельзя прочесть не-GNU версиями программы tar.
'--incremental' в сочетании с '--extract' заставляет tar читать
список содержимого каталога, сохраненный в архиве, удалять файлы


системы файлов, которые не существуют в их каталогах, когда архив был
создан, и затем извлекать файлы в архив.
Это удобно, когда вы восстанавливаете поврежденную систему файлов из
пошаговой резевной копии: это сохраняет сотояние системы файов тем,
которое получено после резервного копирования. Если вы не используете
'--incremental', система файлов, вероятно, наполнится файлами, которые
не должны больше существовать.
При использовании '--incremental' в сочетании с '--list' tar для
каждого каталога архива выдает список его файлов на время создания
архива. Эта информация подается в формате, в котором нелегко читать,
но который зато не является неоднозначным для программы: каждому файлу
предшествует 'Y', если этот файл присутствует в архиве, 'N', если файл
не включен в архив или 'D', если файл -каталог (и включается в архив).
Каждое имя файла заканчивается нулем. За последним файлом следует
дополнительный нуль и чистая строка, указывающие на конец данных.
'--listed-incremental=snapshot-файл' действует как '--incremental',
- 157 -
но при использовании в сочетании с '--create' также заставляет tar
использовать файл "файл", содержащий информацию о состоянии системы
файлов во время последнего резервного копирования, чтобы определить,
какие файлы включить в создаваемый архив. Затем файл модифицируется
tar. Если файл "файл" не существует при задании этой опции, tar его
создает и включает все соответствующие файлы в архив.
Файл, являющийся независимым архивом, содержит дату своей последней
модификации, номер, список устройств и имена каталогов. tar архивирует
файлы с более поздней датой модификации или измененным временем,
каталоги с неизмененным номером и устройством, но измененным именем.
Файл модифицируется после того, как определяются файлы, подлежащие
архивированию, но перед тем, как создан новый архив.
FIXME: этот раздел нужно записать.
9.4 Уровни резервного копирования *
Архив, содержащий все файлы системы файлов, называется полной


резервной копией или полным дампом. Вы можете застраховать свои
данные, каждый день получая полный дамп. Такая стратегия, однако,
требует много места на носителе и времени.
Более эффективно делать полный дамп только иногда. Чтобы
зарезервировать файлы между полными дампами, вы можете использовать
пошаговый дамп. Дамп уровня 1 архивирует все файлы, изменившиеся после
последнего полного дампа.
Обычная стратегия дампа - выполнять полный дамп раз в неделю, а дамп
уровня 1 - раз в день. Это значит, что некоторые версии файлов
фактически будут заархивированы более чем однажды, но эта стратегия
дампа возможна для обновления системы файлов с помощью извлечения
только двух архивов - последнего еженедельного (полного) дампа и
последнего ежедневного (первого уровня) дампа. Единственная
информация, которая теряется - файлы, измененные или созданные после
последнего ежедневного резервного копирования (Производить дамп чаще
одного раза в день обычно не стоит).
- 158 -
GNU tar работает с помощью сценария, который вы используете для
полного дампа и дампа первого уровня. Использование сценариев
(программ оболочки) для выполнения резервного копирования и
пересохранения - удобная и надежная альтернатива ручному набору
списков имен файлов и команд tar.
Перед использованием этих сценариев вам нужно отредактировать файл
'backup-specs', который задает параметры, используемые для сценариев
резервного копирования и сценария обновления.
FIXME: xref Script Syntax
Когда заданы параметры резервного копирования, вы можете выполнить
его или обновление путем выполнения соответствующего сценария.
Имя сценария обновления - restore. Имена сценариев резервного
копирования первого уровня и полного - level-1 и level-0. Сценарий
level-0 также существует под именем weekly, а level-2 - daily - эти
дополнительные имена можно изменить в соответствии с вашим планом
резервного копирования.
FIXME: xref Scripted Restoration
для получения информации о выполнении сценария обновления.


FIXME: xref Scripted Backups
для получения информации о выполнении сценария резервного копирования.
Пожалуйста, заметьте: сценарии резервного копирования и обновления
были созданы для использования вместе. Т.к. возможно обновлять файлы
вручную из архива, который был создан при использовании сценария
резервного копирования, и наоборот, создавать вручную архив, который
затем можно извлечь с помощью сценария обновления, легче использовать
сценарии.
- 159 -
FIXME: xref incremental
and listed-incremental
перед тем, как делать такую попытку.
FIXME: сократить названия подразделов
9.5 Задание параметров для резервного копирования и обновления *
Файл 'backup-specs' задает параметры резервного копирования для
сценариев резервного копирования и обновления, обеспечиваемых tar. Вы
должны отредактировать 'backup-specs' для соответствия с конфигурацией
вашей системы и планом при использовании этих сценариев.
FIXME: Написать о сценариях резервного копирования: BS -сценарий
оболочки... таким образом...'backup-specs' - в синтаксисе сценария
оболочки. Какой параметр... посмотреть сценарии резервного
копирования... которые нужно найти... сейчас синтаксис... значение
указывает на неубедительное...'backup-specs' задает следующие
параметры:
ADMINISTRATOR
Пользовательское имя администратора резервного копирования.
BACKUP_HOUR
Час, в который производится резервное копирование. Это может
быть число от 0 до 23 или строка 'now'.
TAPE_FILE
Устройство tar. Это устройство должно подключаться к машине,
на которой выполняются сценарии дампа.
FIXME: для всего привести примеры
TAPE_STATUS
Команда для получения состояния архивного устройства,
включая ошибки. На некоторых ленточных устройствах может не
- 160 -
быть такой команды, в этом случае просто используйте
'TAPE_STSTUS=false'.
BLOCKING
Блочный фактор, который tar использует при записи
дампированного архива.
FIXME: xref Blocking Factor
BACKUP_DIRS
Список систем файлов, подлежащих дампированию. Вы можете


включить в этот список имя каталога - включатся подкаталоги
этой системы файлов, безотносительно к тому, как они могут
выходить на другие сетевые машины. Подкаталоги других систем
файлов будут игнорироваться. Имя машины задает, на какой
машине выполнять tar
которая содержит систему файлов. Однако на этой машине
должен быть установлен GNU tar, и она должна иметь доступ к
каталогу, содержащему сценарии резервного копирования и их
файлы, использующие те же имена, что и на машине, на которой
выполняются сценарии (т.е. которые pwd будет печатать,
находясь в этом каталоге на этой машине). Если машина
содержит систему файлов, не имеющую такой возможности, вы
можете задать другую машину, так же, как доступ к системе
файлов через NFS.
BACKUP_FILES
Список отдельных файлов для дампирования. К ним должен быть
доступ с машины, на которой выполняется сценарий резервного
копирования.
FIXME: то же имя файла задать. через nfs...
9.5.1 Пример текста 'Backup-specs' *
Нижеприведенное - текст 'backup-specs', как он возникает в FSF:
# site-specific parameters for file systen backup.
- 161 -
ADMINISTRATOR=fridman
BACKUP_HOUR=1
TAPE_FILE=/dev/nrsmt0
TAPE_STSTUS="mts -t $TAPE_FILE
BLOCKING=124
BACKUP_DIRS="
albert: /fs/fsf
apple-gunkies:/gd
albert:/fs/gd2
albert:/fs/gp
geech:/usr/jia
churchy:/usr/roland
albert:/
albert:/usr
apple-gunkies:/
apple-gunkies:/usr
gnu:/hack
gnu:/u
apple-gunkies:/com/mailer/gnu
apple-gunkies:/com/archive/gnu"
BACKUP_FILES="/com/mailer/aliases /com/mailer/league *[a-z]"
9.5.2 Синтаксис 'Backup-specs' *
'Backup-specs' - в синтаксисе сценария оболочки. При редактировании
сценария рассматриваются следующие соглашения:
FIXME: "convention?"
Взятый в кавычки текст рассматривается как непрерывный, даже если он
состоит из более чем одной строки. Таким образом, вы не можете
включить текст, превращенный в комментарий, в многострочный, взятый в
кавычки. BACKUP_FILES и BACKUP_DIRS - два наиболее предпочтительных


параметра для этого.
Текст, взятый в кавычки, обычно не содержит wildcards. Однако
- 162 -
в 'backup-specs' параметры BACKUP_FILES и BACKUP_DIRS могут содержать
wildcards.
9.6 Использование сценариев резервного копирования *
Синтаксис выполнения сценария резервного копирования:
'script-name' [время_выполнения]
где время_выполнения - или заданное системное время, или now. Если вы
не задаете время, подразумевается время, заданное в 'backup-specs'.
FIXME: pxref Script Syntax
Вы должны начать сценарий с установления ленты или диска. Когда вы
начали сценарий, он запрашивает у вас, если нужно, новую ленту или
диск. Тома носителей не должны соответствовать архивным файлам -
многотомный архив может начинаться с середины ленты, которая уже
содержит конец другого многотомного архива. Сценарий restore выдает
приглашение носителю для тома архива, т.ч., чтобы избежать сообщения
об ошибке, вы должны запомнить, на какой дорожке лента или диск
содержит тот или иной том архива.
FIXME: xref Scripted Restoration
FIXME: изменились ли имена файлов?
Сценарии резервного копирования записывают два файла в систему
файлов. Первый - файл '/etc/tar-backup/', который используется
сценариями для хранения и извлечения информации о том, какие файлы
дампированы. Этот файл не предназначен для чтения людьми и не должен
быть ими удален.
FIXME: xref incremental and listed-incremental
для получения более подробной информации об этом файле.
- 163 -
Второй файл - файл протокола, содержащий имена систем файлов и
дампированных файлов, время, в которое время было произведено
резервное копирование, любые сгенерированные сообщения об ошибках и
сколько места осталось в томе носителя после того, как был записан
последний том архива. Вы можете проверять этот протокольный файл после
каждого резервного копирования. Имя файла -
'log-месяц-день-год-level-1' или 'log-месяц-день-год-full'.
Сценарий также выдает имя каждой системы, дампированной на
стандартный вывод.
FIXME: раздел о сценарии restore прокоментирован.

Содержание раздела