Таr и gzip

Большинство пользователей других операционных систем, в том числе Windows 98 и Mac OS, знакомы сосжатыми архивами.Сжатый архив - это единый файл, содержащий один или несколько файлов в сжатой форме.

Сжатые архивы часто используются для распространения программного обеспечения через Internet. В Linux есть команда unzip для доступа к архивным ZIP-файлам, но в мире Unix большее распространение получили архивы TAR. Эти архивы после заполнения сжимаются программой сжатия одиночных файлов gzip.

Tar

Первоначально программа tar предназначалась для создания резервных копий системы на магнитных лентах(tar -сокращение от tape archive, что означает архив на магнитной ленте). В настоящее время эта программа широко применяется для подготовки программного обеспечения к распространению.

Формат команды создания архива:

$ tar cvftar-file-патв file-list

По этой команде создается архивный файл tar-file-name (как правило, с расширением . tar), в который записываются все файлы, указанные в списке file-list, составленном в соответствии с правилами, рассмотренными в гл. 16.Обратите внимание: файлы, вносимые в архив, не переносятся, а копируются, поэтому нет опасности их случайного удаления.

Обратите также внимание на параметры, следующие непосредственно за командой. В приведенном примере это cvf. Каждый из этих параметров определяет отдельные аспекты поведения команды tar:

Если необходимо архивировать все файлы с расширением . txt в текущем каталоге в архивный файл text. tar, можно воспользоваться командой:

$ tar cvf text.tar *.txt ab.txt pop.txt

Обратите внимание на перечисление файлов, копируемых в архив.

Иногда ipeGyeiUM копирован, в архив каталог. К счастью, каталог, указанный в списке файлов команды tar, копируется в архив вместе со всеми содержащимися в нем файлами и подкаталогами. Следовательно, для копирования всего содержимого, например, каталога vnc в архивный файл vnc. tar можно воспользоваться командой

$ tar cvf vnc.tar vnc

Полностью, это будет иметь следующий вид.

$ tar cvf vnc.tar vnc vnc/ vnc/LICENSE.TXT vnc/README vnc/README. vnc server vnc/Xvnc vnc/classes/ vnc/classes/DesCipner.class vnc/classes/animatedMemorylmageSource.class vnc/classes/authenticationPanel.class vnc/classes/clipboardFrame.class vnc/classes/optionsFrame.class vnc/classes/rfbProto.class vnc/classes/vncCanvas.class vnc/classes/vncviewer.class vnc/classes/vncviewer.jar vnc/vncpasswd vnc/vncserver vnc/vncviewer Обратите внимание, что в первой ответной строке команды указывается создание каталога vnc в архиве, после чего происходит копирование файлов в этот каталог.

Существующий архив, как правило, просматривают или извлекают из него файлы. Для, просмотра содержимого архива параметр с заменяется параметром t.

$ tar tvf vnc.tar drwxr-xr-x root/root 0 1998-05-16 23:55 vnc/ -rw-r—r—.root/root 18000 1998-01-23 16:52 vnc/LICENCE.TXT -rw-r—r— root/root 6142 1998-01-23 16:53 vnc/REAEME -r—r—r— root/root 601 1998-01-23 16:28 vnc/README.vncserver -r-xr-xr-x root/root 1286834 1998-01-23 13:00 vnc/Xvnc drwxr-sr-x root/root 0 1998-01-23 16:24 vnc/classes/ -r—r—r— root/root 7143 1998-01-23 16124 vnc/classes/DesCipher.class -r—r—r— root/root 1329 1998-01-23 16:24 vnc/classes/ animatedMemorylmageSource. class -r—r—r— root/root 2068 1998-01-23 16:24 vnc/classes/ ^authenticationPanel. class -r—r—r— root/root 1761 1998-01-23 16:24 vnc/classes/clipboardFrame.class -r—r—r— root/root 3210 1998-01-23 16:24 vnc/classes/optionsFrame.class -r—r—r— root/root 8309 1998-01-23 16:24 vnc/classes/rfbProto.class -r—r—r— root/root 7092 1998-01-23 16:24 vnc/classes/vncCanvas.class -r—r—r— root/root 7100 1998-01-23 16:24 vnc/classes/vncviewer.class -r—r—r— root/root 20564 1998-01-23 16:24 vnc/classes/vncviewer.jar -r-xr-xr-x root/root 11433 1998-01-23 13:00 vnc/vncpasswd -r-xr-xr-x root/root 10795 1998-05-17 00:17 vnc/vncserver -r-xr-xr-x root/root 49685 1998-01-23 13:08-vnc/vncviewer

Как видим, список файлов выводится в подробной форме: как при выводе содержимого каталога командой Is' -1.

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

$ tar xvf vnc.tar vnc/ vnc/LICENSE.TXT vnc/README vnc/README.vncserver vnc/Xvnc vnc/classes/ vnc/classes/DesCipher.class vnc/classes/animatedMemorylmageSource.class vnc/classes/authenticationPanel.class vnc/classes/clipboardFrame.class vnc/classes/optionsFrame.class vnc/classes/rfbProto.class vnc/classes/vncCanvas.class vnc/classes/vncviewer.class vnc/classes/vncviewer.jar vnc/vncpasswd vnc/vncserver vnc/vncviewer

Gzip

В приведенных примерах применения команды tar файлы архивируются, но не сжимаются. В Linux для сжатия файлов используется команда gzip.

В отличие от программы ZIP из Windows, которая может сразу создать архив, состоящий из множества сжатых файлов, команда gzip только сжимает отдельные файлы.

Если у вас есть очень большой файл test .pdf, использовать который в ближайшее время не планируется, то для экономии места на диске его можно сжать следующей командой.

$ gzip test.pdf

По этой команде файл test. pdf сжимается и к его имени добавляется расширение . gz, так что он превращается в файл test .pdf . gz. До сжатия файл имел объем 110 778 байт:

-rw-r--r-- I root root 110778 Jun 5 16:54 test.pdf

После сжатия его объем уменьшился до 83 729 байт.

-rw-r--r-- I root root 83729 Jun 5 16:54 test.pdf.gz

Как и в большинстве команд, в команде gzip для указания нескольких файлов можно использовать подстановочные символы. Например, по команде

$ gzip *

сжимаются все файлы в текущем каталоге (но не в его подкаталогах).

Восстановлениесжатыхфайлов

Для восстановления файла, сжатого командой gzip, можно воспользоваться этой же командой с параметром -d.

$ gzip -d test.pdf.gz

Файл восстанавливается в прежнем виде, из его имени удаляется расширение . gz.

Можно обойтись,без параметра -d, если для восстановления сжатого файла ввести команду:

$ gunzip test.pdf.gz

Объединение команд gzip и tar

Поскольку ранние версии команды tar выполняли архивирование без сжатия, она обычно применялась в сочетании с командой gzip, как в следующем примере:

$ tar cvf text.tar *.txt ab.txt pop.txt $ gzip text.tar

где создается сжатый архив с именем text. tar. gz.

Доступ в этот архив возможен только после восстановления от сжатия:

$. gunzip text.tar.gz $ tar tvf text.tar -rw-r--r-- root/root 48 1998-06-05 16:13 ab.txt -rw-r--r-- root/root 6 1998-06-05 16:13 pop.txt

Более поздние версии команды tar, в том числе входящие в современные дистрибутивы, предусматривают непосредственное создание сжатых архивов и прямой доступ к ним. Чтобы создать сжатый архив, команду tar надо ввести с параметром z:

$ tar czvf vnc.tar.gz vnc vnc/ vnc/LICENSE.TXT vnc/README vnc/README.vncserver vnc/Xvnc vnc/classes/ vnc/classes/DesCipher.class vnc/classes/animatedMemorylmageSouree.class vnc/classes/authenticationPanel.class vnc/classes/clipboardFrame.class vnc/classes/optionsFrame.class vnc/classes/rfbProto.class vnc/classes/vncCanvas.class vnc/classes/vncviewer.class vnc/classes/vncviewer.jar vnc/vncpasswd vnc/vncserver vnc/vncvi ewer

Для просмотра полученного архива можно воспользоваться командой'

$ tar tzvf text.tar.gz -rw-r—r— root/root 48 1998-06-05 16:13 ab.txt -rw-r—r— root/root 6 1998-06-05 16:13 pop.txt

а для извлечения файлов - командой $ tar xzvf text.tar.gz

ab.txt pop.txt

Примечание

Подробно о командах tar и gzip,атакже их параметрах, см. на страницах руководства этих команд.