12.5. Команды для работы с файлами и архивами

12.5. Команды для работы с файлами и архивами

Архивация

tar

Стандартная, для UNIX, утилита архивирования. Первоначально -- это была программа Tape ARchiving, которая впоследствии переросла в универсальный пакет, который может работать с любыми типами устройств (см. Пример 3-4). В GNU-версию tar была добавлена возможность одновременно производить сжатие tar-архива, например команда tar czvf archive_name.tar.gz * создает tar-архив дерева подкаталогов и вызывает gzip для выполнения сжатия, исключение составляют скрытые файлы в текущем каталоге ($PWD)[ 30 ].

Некоторые, часто используемые, ключи команды tar:

1. -c -- создать (create) новый архив

2. -x -- извлечь (extract) файлы из архива

3. --delete -- удалить (delete) файлы из архива

Этот ключ игнорируется для накопителей на магнитной ленте.

4. -r -- добавить (append) файлы в существующий архив

5. -A -- добавить (append) tar-файлы в существующий архив

6. -t -- список файлов в архиве (содержимое архива)

7. -u -- обновить (update) архив

8. -d -- операция сравнения архива с заданной файловой системой

9. -z -- обработка архива с помощью gzip

(Сжатие или разжатие, в зависимости от комбинации сопутствующих ключей -c или -x)

10. -j -- обработка архива с помошью bzip2

При восстановлении "битых" tar.gz архивов могут возникнуть определенные сложности, поэтому делайте несколько резервных копий.

shar

Утилита создания shell-архива. Архивируемые файлы объединяются в единый файл без выполнения сжатия, в результате получается архив -- по сути полноценный сценарий на языке командной оболочки, начинающийся со строки #!/bin/sh, который содержит полный набор команд, необходимый для разархивирования. Такого рода архивы до сих пор можно найти в некоторых телеконференциях в Internet, но в последнее время они активно вытесняются связкой tar/gzip. Для распаковки shar-архивов предназначена команда unshar.

ar

Утилита создания и обслуживания архивов, главным образом применяется к двоичным файлам библиотек.

rpm

Red Hat Package Manager, или rpm -- набор утилит, предназначенных для построения и обслуживания пакетов программного обеспечения как в исходном коде, так и в собранном (откомпилированном) виде. Среди всего прочего, включает в себя утилиты, производящие установку ПО, проверку зависимостей пакетов и проверку их целостности.

Самый простой вариант установки ПО из rpm -- выполнить команду rpm -i package_name.rpm.

Команда rpm -qa выдаст полный список всех установленных rpm-пакетов в данной системе. Команда rpm -qa package_name выведет только пакет(ы) с именем, содержащим комбинацию символов package_name.

bash$ rpm -qa

redhat-logos-1.1.3-1

glibc-2.2.4-13

cracklib-2.7-12

dosfstools-2.7-1

gdbm-1.8.0-10

ksymoops-2.4.1-1

mktemp-1.5-11

perl-5.6.0-17

reiserfs-utils-3.x.0j-2

...

bash$ rpm -qa docbook-utils

docbook-utils-0.6.9-2

bash$ rpm -qa docbook | grep docbook

docbook-dtd31-sgml-1.0-10

docbook-style-dsssl-1.64-3

docbook-dtd30-sgml-1.0-10

docbook-dtd40-sgml-1.0-11

docbook-utils-pdf-0.6.9-2

docbook-dtd41-sgml-1.0-10

docbook-utils-0.6.9-2

cpio

Специализированная утилита архивации и копирования (copy input and output). Используется все реже и реже, поскольку вытесняется более мощным архиватором tar/gzip. Наиболее употребительна для таких операций, как перемещение дерева каталогов.

Пример 12-22. Пример перемещения дерева каталогов с помощью cpio

#!/bin/bash

# Копирование дерева каталогов с помощью cpio.

ARGS=2

E_BADARGS=65

if [ $# -ne "$ARGS" ]

then

echo "Порядок использования: `basename $0` source destination"

exit $E_BADARGS

fi

source=$1

destination=$2

find "$source" -depth | cpio -admvp "$destination"

# Информацию по ключам утилиты cpio вы найдете в страницах руководства "man cpio".

exit 0

rpm2cpio

Эта утилита конвертирует rpm-пакет в архив cpio.