· От имени суперпользователя создайте в его домашнем каталоге полный архив файлов в каталоге /etc. Архив должен называться etc.tar.gz. При соз- дании архива в нем должны быть записаны файлы с их полными именами.
· Получите содержимое архива для просмотра списка файлов в нем.
· Извлеките из созданного архива единственный файл /etc/hosts так, чтобы он был сохранен в каталоге /tmp с тем же именем.
· Разделите созданный архив на части, размером по 50 Кбайт, используя для этого утилиту split. Каким образом из полученных частей собрать целый архив?
Команда cpio
Команда cpio является вторым по значимости инструментом архивирования после tar. Особенность cpio в том, что имена файлов для архивирования она принимает через стандартный поток ввода.
Команда cpio способна работать в трех режимах, определяемых опциями:
r -o — для копирования в архив (copy-out), в котором архивируемые файлы помещаются в архив, а сам поток байтов архива копируется в выходной (output) файл;
r -i — для копирования из архива (copy-in), в котором файлы извлекаются из архива, который передается команде на вход (input);
r -p — проходной режим (pass-through), при использовании которого файлы копируются из одного каталога в другой без реального создания архива.
Чаще всего список файлов, которые должны быть помещены в архив, пере- дается на стандартный поток ввода команды cpio с помощью команды find.
В примере 12.10 в архив будут помещены только те файлы в домашнем ката- логе, которые были изменены за последние сутки (режим copy-out).
Эта команда найдет все файлы в домашнем каталоге пользователя tania, из- мененные в течение последних 24 часов, передаст их список в стандартный поток ввода утилиты cpio, которая поместит их в файл архива /tmp/tania.cpio. Опция -v используется для получения подробной информации о процессе архивирования.
Для передачи в стандартный поток вывода информации о файлах в архиве используется режим copy-in команды cpio с опцией -t (type) — при- мер 12.11.
Пример 12.11. Получение содержимого архива cpio
$ cpio -ivt < /tmp/tania.cpio
В этом примере содержимое архива было считано командой cpio из стан- дартного потока ввода. Команда cpio работала в режиме copy-in (опция -i).
Извлечь файлы из архива можно с помощью такой же команды, но без оп- ции -t. При этом обычно устанавливают опцию -d, вынуждающую команду cpio создавать отсутствующие каталоги при восстановлении файлов.
Эта команда извлечет в текущий каталог файлы из tania.cpio (пример 12.12).
Пример 12.12. Извлечение файлов из архива cpio
$ cpio -ivd < /tmp/tania.cpio
В проходном режиме команды cpio, который работает при установленной опции -p, архив не создается. Файлы, имена которых передаются команде cpio через стандартный поток ввода, рекурсивно копируются в целевой ка- талог.
Далее приводится список других часто используемых опций cpio:
r -B — устанавливает размер блока 5120 байтов вместо 512 байтов по умол- чанию;
r -F — указывает имя файла для ввода или вывода архива;
r -O — указывает имя файла для записи архива;
r -I — указывает имя файла для считывания архива;
r -A — добавление файлов к архиву, указанному после опции -F или -O;
r -E — извлекать из архива файлы, имена которых удовлетворяют шаблону;
r -f — не копировать файлы, имена которых удовлетворяют заданному шаблону;
r -n — не переводить UID и GID в имена пользователей и групп;
r -r — интерактивно переименовывать файлы;
r -m — сохранять дату модификации файлов;
r -u — безусловно заменять новыми существующие файлы.