Будучи наиболее эффективным средством резервирования полных файловых систем, dump — не единственная программа, которую можно использовать для архивирования файлов на ленты. Перемещать файлы с одного носителя на другой могут также программы tar, cpio и dd.
Программа tar: упаковка файлов
Программа tar берет несколько файлов или каталогов и записывает их как один файл, часто прямо на ленту. Это удобный инструмент создания резервных копий файлов, которые в ближайшем будущем придется восстанавливать. Например, если пользователь уезжает на полгода, а в системе мало дисковой памяти, администратор системы может воспользоваться программой tar и перенести файлы этого пользователя на ленты, после чего удалить их с диска.
Программа tar, кроме того, хорошо подходит для перемещения дерева каталогов из одного места в другое, особенно если имеющаяся в системе программа ср не обеспечивает рекурсивное копирование или если файлы копируются от имени пользователя root (поскольку программа tar сохраняет информацию о принадлежности объектов). Например, команда
tar cf - исходный_каталог | ( cd конечный_каталог ; tar xfp - )
создает копию дерева исходного каталога в конечном каталоге. Небольшое предупреждение: не указывайте каталог в качестве конечного, так как наличие символических ссылок и программ автоматического монтирования может привести к тому, что реальный конечный каталог будет отличаться от ожидаемого. Мы пострадали из-за этого несколько раз.
Большинство версий программы tar не отслеживает символические ссылки по умолчанию, но им можно дать указание делать это. Загляните в руководство по программе и найдите там правильный флаг, потому что в разных системах он разный.
Самый большой недостаток программы tar состоит в том, что большинство ее версий не допускает использования многотомных архивов. Если данные, которые нужно заархивировать, на одну ленту не помещаются, программу tar использовать нельзя. Но даже если имеющаяся программа tar заявляет о поддержке многотомных архивов, отнеситесь к этому скептически. Не исключено, что она работает неправильно.
Еще одна проблема, характерная для многих версий программы tar, заключается в том, что длина путевого имени ограничена 100 символам. Это не позволяет использовать программу для архивирования глубоких иерархий каталогов. Если установленная в системе версия программы поддерживает опцию, позволяющую работать с более длинными путевым именами (она есть в GNU-версии tar), помните о том, что обладатели стандартной программы tar не смогут прочитать записанные вами ленты.
Опция b программы tar позволяет задать размер блока (блок-фактор), который должен учитываться при записи информации на ленту. Размер блока указывается в виде числа 512-байтовых фрагментов и определяет, какой объем данных программа помещает во внутренний буфер перед выполнением операции записи. Отдельные DAT-устройства отказываются нормально работать, если размер блока не установлен равным определенному числу; другие накопители этого не требуют.
Иногда при некоторых значениях блок-фактора производительность работы с лентой повышается. Оптимальный размер блока зависит от конкретного компьютера и ленточного накопителя. Во многих случаю разница в быстродействии незаметна. Если есть сомнения, задайте блок-фактор 20.
Программа tar не допускает наличия ошибок на лентах.
Программа cpio: архивирование в системах семейства System V
Утилита архивирования cpio по своим функциональным возможностям близка к программе tar. Она является компонентом старых систем и редке используется сегодня. Но ее можно применять для переноса дерева каталогов Команда
find исходный_каталог -depth -print | cpio -pdm конечный_каталог
создает копию дерева исходного каталога в конечном каталоге. Аналогично программе tar, большинство версий утилиты cpio не разрешает создавать многоленточные архивы. Некоторые версии некорректно работают с каналами, а специальные файлы может копировать только пользователь root. Опции этой программы сильно отличаются в разных системах, поэтому следует внимательно читать руководство.
Программа dd: манипулирование битами
Программа dd предназначена для копирования и преобразования файлов. При отсутствии указаний о выполнении какого-либо преобразования программа просто копирует информацию из входного файла в выходной. Если пользователь принес ленту, которая записана не в UNIX, программа dd может оказаться единственным способом ее прочитать.
Одним из первоначальных применений программы dd было создание копии всей файловой системы. Сегодня есть более эффективный вариант: создать с помощью утилиты newfs целевую файловую систему, а затем запустить команду dump в конвейере с командой restore. Программа dd, при неправильном ее использовании, иногда может искажать информацию о структуре разделов. Она может копировать файловые системы только между разделами в точности одного и того же размера.
Программу dd можно также применять для создания копий магнитных лент. При наличии двух ленточных накопителей (к примеру, /dev/rmt8 и /dev/rmt9) используйте команду
# dd if=/dev/rmt8 of=/dev/rmt9 cbs=16b
Если есть один накопитель (/dev/rmt8), воспользуйтесь такой последовательностью:
# dd if=/dev/rmt8 of=tfile cbs=16b
/* Модифицируем ленты */
# dd if=tfile of=/dev/rmt8 cbs=16b
# rm tfila
Конечно, когда имеется всего один накопитель, должно быть достаточно дискового пространства для сохранения образа ленты.
Еще одна историческая функция программы dd — преобразование данных в нужный формат при обработке QIC-лент, отличающихся друг от друга только порядком следования байтов. Например, чтобы прочесть на компьютере Sun ленточный tar-архив, записанный на компьютере SGI, нужно задать команду
# dd if=/dev/rst8 conv=swab | tar xf -
Имя ленточного устройства зависит от используемой системы.
Программа volcopy: дублирование файловых систем
Программа
volcopy создает точную копию файловой системы на другом устройстве, изменяя при необходимости размер блока. Эта программа имеется в Solaris, HP-UX и Linux. Ее можно использовать для резервного копирования файловой системы на съемный диск или для создания полной копии системы на ленте.