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