Возможности tar
Возможности 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-permissions, --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 (http://www.tolisgroup.com) используется пофайловое сжатие информации.