Таr и gzip

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

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

Tar

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

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

$ tar cvf tar-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— 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, а также их параметрах, см. на страницах руководства этих команд.