— одна из самых популярных программ, используемых для резервного копирования в системах Linux и UNIX. Она объединяет несколько файлов в один файл архива, что упрощает передачу информации по сети и сохранение ее на резервном носителе. Название программы представляет собой сокращение слов tape archive (архив на ленте). Утилиту
tar
можно использовать для организации резервного копирования как по инициативе клиента, так и по инициативе сервера. Вместо
tar
в системе Linux могут применяться и другие подобные программы, например
cpio
или
dump
. Особенности работы с ними описаны в документации на программы и в справочной системе Linux. В данной главе обсуждается лишь программа
tar
; ей уделено особое внимание потому, что она наиболее популярна среди пользователей, а также потому, что она используется другими инструментальными средствами, например
smbtar
и AMANDA.
Возможности tar
Утилита
tar
— чрезвычайно мощный инструмент; она поддерживает большое количество опций. Опции программы
tar
делятся на две категории: команды и модификаторы. Команды указывают утилите
tar
, какие действия она должна выполнить, например, создать архив, вывести содержимое существующего архива, извлечь файлы и т.д. Модификаторы уточняют действия программы. С их помощью можно определить устройство, на которое следует записать архив, указать файлы, которые необходимо включить в архив, или задать сжатие архива посредством
gzip
или
bzip2
и т.д. Утилита
tar
вызывается следующим образом:
tar команда [модификаторы] имена_файлов
В качестве имен файлов в большинстве случаев задаются имена каталогов. Если при вызове программы задано имя каталога,
tar
включает в состав архива все файлы и все подкаталоги этого каталога. Чтобы создать архив всей файловой системы, надо указать корневой каталог (
/
).
В табл. 17.1 и 17.2 перечислены наиболее часто используемые команды и модификаторы утилиты
tar
. На самом деле набор допустимых опций гораздо более обширный и включает большое количество команд и модификаторов. Дополнительную информацию о них можно получить на страницах справочной системы, посвященных утилите
tar
.
Таблица 17.1. Часто употребляемые команды утилиты
tar
Команда
Сокращенный вариант
Описание
– -create
с
Создает архив
– -concatenate
A
Добавляет tar-файл к существующему архиву
– -append
r
Добавляет обычные файлы к существующему архиву
– -update
u
Добавляет файлы, которые имеют более позднюю дату создания, чем файлы с соответствующими именами, присутствующие в составе архива
– -diff
или
– -compare
d
Сравнивает файлы в архиве с файлами на диске
– -list
t
Выводит содержимое архива
– -extract
или
– -get
x
Извлекает файлы из архива
Таблица 17.2. Часто употребляемые модификаторы утилиты
tar
Модификатор
Сокращенный вариант
Описание
– -absolute-paths
P
Сохраняет символ
/
в начале пути к файлу
– -bzip2
I
Задает обработку архива с помощью
bzip2
. (В старых версиях
tar
не поддерживается)
– -directory каталог
C
Перед обработкой данных делает указанный каталог текущим
– -exclude файл
(отсутствует)
Запрещает включать файл в архив
– -exclude-from файл
X
Запрещает включать в архив файлы, указанные в данном файле
– -file [узел:]файл
f
Выполняет архивирование, используя в качестве архива указанный файл на указанном узле. (Узел сети указывается при выполнении резервного копирования, инициируемого клиентом.)
– -gzip
или
– -ungzip
z
Задает обработку архива программой
gzip
или
ungzip
– -listed-incremental=файл
g
Создает или использует файл, содержащий результаты инкрементного копирования
– -multi-volume
M
Задает обработку архива на нескольких лентах
– -one-file-system
1
Сохраняет или восстанавливает только одну файловую систему
– -same-permissions
или
– -preserve-permissions
p
Сохраняет
информацию о пользователях и о правах доступа
– -tape-length N
L
Определяет длину ленты в килобайтах; используется совместно с
– -multi-volume
– -verbose
v
Выводит информацию об обработанных файлах
– -verify
W
Сразу после записи сравнивает исходный файл с файлом, записанным в архив
В качестве примера использования приведенных выше опций рассмотрим следующую ситуацию. Предположим, что к компьютеру через интерфейс SCSI подключен накопитель на магнитных лентах. Для доступа к этому устройству используется имя
/dev/st0
или
/dev/nst0
. Для создания резервной копии содержимого каталога
/home
с сохранением прав доступа и с выводом имен архивируемых файлов надо задать следующую команду:
# tar --create --verbose --file /dev/st0 /home
Если указать сокращенные обозначения опций, приведенные в табл. 17.1 и 17.2, то данная команда примет вид:
# tar cvf /dev/st0 /home
Некоторые опции программы
tar
(а именно
– -one-file-system
,
– -same-permission
s,
– -listed-incremental
и
– -verify
) заслуживают более подробного обсуждения. В состав файловой системы Linux могут входить виртуальные файловые системы (например,
/proс
) и сменные носители. Кроме того, не исключено, что вы захотите запретить резервное копирование файловых систем, находящихся на некоторых устройствах. При использовании опции
– -one-file-system
копироваться будут только те разделы, которые вы непосредственно укажете. Вместо
– -one-file-system
можно задать опцию
– -exclude
или
– -exclude-from
, которая позволяет непосредственно исключать из процесса резервного копирования некоторые каталоги, например
/proc
.
Опция
– -same-permissions
важна при работе с системными файлами, поскольку в ряде случаев утилита
tar
теряет некоторые данные о правах доступа. Чаще всего это проявляется, когда конкретные права не соответствуют значению
umask
. Опция
– -same-permissions
бывает необходима при восстановлении сохраненных файлов.
Если при вызове
tar
указана опция
– -listed-incremental
, программа создает новый файл либо использует имеющийся с информацией о файлах, включенных в архив. При пером запуске
tar
с этой опцией создается файл для хранения сведений об архиве, и все указанные файлы помещаются в архив. При последующих вызовах утилиты
tar
с опцией
– -listed-incremental
обрабатываются только те файлы, которые были созданы или модифицированы с момента последней операции резервного копирования. Другими словами, данная опция позволяет вместо полного резервного копирования осуществлять частичное, или инкрементное, копирование. Многие администраторы раз в неделю или раз в месяц выполняют полное копирование и ежедневно — частичное. Такой подход позволяет обеспечить сохранность данных минимальными усилиями. (Восстанавливая информацию с резервной копии, созданной посредством инкрементного копирования, вы, возможно, обнаружите, что недавно удаленные файлы снова появились на диске. Дело в том, что при инкрементном копировании файлы, которые были удалены с момента последнего полного копирования, не помечаются как отсутствующие.) Выполняя резервное копирование в сетевом окружении, целесообразно в разные дни недели осуществлять полное копирование информации на разных компьютерах. Например, вы можете составить расписание и указать в нем, что в понедельник должно выполняться копирование содержимого
machine1
, во вторник —
machine2
и т.д.
Опция
– -verify
предназначена для проверки того, насколько корректно выполнено копирование данных. В результате такой проверки время копирования существенно возрастает, но подобное замедление работы часто бывает оправдано, особенно в тех случаях, когда в накопителе отсутствует встроенная функция проверки. (В большинстве устройств среднего и высокого уровня поверка осуществляется на аппаратном уровне.) Если вы указываете при вызове
tar
опцию
– -verify
или
– -diff
, возможны ложные сообщения об ошибках. Дело в том, что в то время, когда выполняется резервное копирование, пользователи продолжают работать в системе, поэтому с момента копирования на резервный носитель до момента проверки файл может быть изменен. Наиболее часто модифицируются файлы протоколов, содержимое очереди на печать, файлы в каталоге
/tmp
и другие подобные данные. Если в результате проверки выявлено несоответствие содержимого часто изменяемых файлов, повода для беспокойства нет. Если же при проверке не совпали статические данные, например файлы в каталоге
/usr
это может означать, что копирование выполняется некорректно.
Многие современные накопители на магнитных лентах поддерживают встроенные функции сжатия, поэтому в применении опции
– -bzip2
или
– -gzip
обычно нет необходимости. Если же вы указываете данные опции при вызове
tar
, помните, что их использование может представлять угрозу для целостности резервной копии. Опции
– -bzip2
и
– -gzip
осуществляют сжатие не отдельных файлов, а всего архива, поэтому если в процессе сжатия возникнет ошибка, данные, содержащиеся в архиве, будут утеряны. Сжатие, реализованное на аппаратном уровне, обеспечивает определенную устойчивость к ошибкам подобного рода. В случае сбоя искажаются один-два файла, а остальные данные в архиве можно использовать. Некоторые программы резервного копирования сжимают данные таким же способом, повышая тем самым надежность всей системы. Например, в коммерческом продукте BRU (