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. Мы использовали для создания архива следующие ключи:
# так делать не надо cd /home/apache tar cvzf apache.tar.gz *
Архив так тоже можно создать, но при распаковке он "рухнет" всеми своими сотнями файлов и подкаталогов в тот каталог, где он будет распаковываться. Это неудобно, да и не принято - это считается дурным тоном. Намного грамотнее и красивее упаковать сразу целый каталог, как в предыдущем примере. Тогда по команде
tar xzvf apache.tar.gz
в том каталоге, где лежит архив, создастся подкаталог apache (помните, там было сказано "apache/*"?). И уже в него будут распакованы все файлы и подкаталоги архива. В этой команде tar мы использовали один незнакомый ключ - x. Он требует распаковать архив.