Администрирование ОС Solaris

       

Tar


Для сжатия больших файлов в UNIX изначально использовалась программа compress. Она сжимала файл, после сжатия добавляла к имени файла .Z. Программа compress до сих пор поставляется практически со всеми диалектами UNIX. В IRIX и некоторых других системах она является стандартной утилитой сжатия. Чтобы вернуть файл, сжатый compress, к прежнему, несжатому состоянию используется uncompress.

В Linux и FreeBSD, а также во многих других диалектах для сжатия применяют gzip. Он использует тот же алгоритм сжатия LZW, что и WinZip или pkzip, известные вам по системам Microsoft, однако не совместим с ними по формату файлов. Программа WinZip for Windows понимает форматы gzip, а gzip ее форматы не понимает. Для распаковки файлов, сжатых gzip, используют gunzip. Большинство версий gzip не умеют сжимать каталоги с их содержимым - только файлы.

Есть еще утилиты zip и unzip, которые работают с теми же форматами файлов, что и pkzip, WinZip и другие архиваторы в Microsoft-системах. Они редко используются в UNIX, только если нужно обеспечить совместимость с Windows-системами.

Программа tar может использоваться как для архивирования файлов на ленту, так и для создания архивов. Она собирает все указанные ей файлы в один большой файл. Имя файла tar никак не модифицирует. В UNIX принято, чтобы имя архива, созданного tar, заканчивалось на .tar. Об этом должен позаботиться тот, кто запускает tar, указав ей верное имя архива.

Затем удобно сжать получившийся файл с помощью gzip, чтобы он занимал меньше места. Многие дистрибутивы программных пакетов в UNIX упакованы tar и gzip. У команды tar даже есть ключ z. Он говорит tar, что после упаковки файлов в архив нужно вызвать gzip для сжатия. Такой же ключ используется и для распаковки - когда tar перед тем, как начать свою работу, вызывает gunzip.

Например, мне нужно упаковать дистрибутив apache, который лежит в /home/apache:

cd /home tar cvzf apache.tar.gz apache/*

Всего три команды в UNIX принимают (и в некоторых версиях - требуют) ключи без знака "минус" перед ними.
Это ps, dump и tar. Мы использовали для создания архива следующие ключи:

  • с - create - создать архив;
  • v - verbose mode - выводить имена всех пакуемых файлов на экран;
  • z - zip - после упаковки вызвать gzip для сжатия;
  • f - file - записать результат в файл, который указан после ключа f, а не на первый ленточный накопитель, как по умолчанию;
  • apache.tar.gz - это имя архива, а apache/* - то, что надо упаковать. Лучше всего запаковывать целый каталог, а не входить в него и паковать содержимое, вот так:


  • # так делать не надо cd /home/apache tar cvzf apache.tar.gz *

    Архив так тоже можно создать, но при распаковке он "рухнет" всеми своими сотнями файлов и подкаталогов в тот каталог, где он будет распаковываться. Это неудобно, да и не принято - это считается дурным тоном. Намного грамотнее и красивее упаковать сразу целый каталог, как в предыдущем примере. Тогда по команде

    tar xzvf apache.tar.gz

    в том каталоге, где лежит архив, создастся подкаталог apache (помните, там было сказано "apache/*"?). И уже в него будут распакованы все файлы и подкаталоги архива. В этой команде tar мы использовали один незнакомый ключ - x. Он требует распаковать архив.


    Содержание раздела