gzip

gzip(1) являється GNU програмою стиснення файлів. Вона візьме файли, надані їй як аргумент на командному рядку, і ущільнить їх для зменшення дискового простору, який вони займають. Ось приклад простого використання команди:

$ gzip filename

Отриманий в результаті файл буде названо filename.gz і, як правило, буде менший розміром за оригінальний. Зауважте, що filename.gz замінить filename. Це означає, що filename більше не існуватиме, тільки його стиснена копія. Компресія файлів ефективніша зі звичайними текстовими файлами, тоді як зображення у форматі jpeg, аудіо файли mp3 і ще деякі формати не надто виграють від цього, оскільки вони вже достатньо стиснені.

Програма gzip дозволяє різні коефіцієнти стиснення; звично, використовується правило "золотої середини" між кінцевим розміром файлу і часом який використовується на компресію.

Максимального стиснення можна досягти наступною командою:

$ gzip -9 filename

Останнє може зайняти трохи більше часу, але в кінцевому результаті отримаємо файл настільки малий розміром, наскільки gzip спроможний його зменшити. Використання менших значень на командному рядку працюватиме швидше, але файл не буде настільки стиснено.

Розгортання стисненого gzip файлу можна добитися двома командами (які насправді являються тією самою програмою). Програма gzip розтисне будь-які файли з відомими їй закінченнями назв файлів: .gz, -gz, .z, -z, .Z або -Z. Першою, поширеною методою є виклик ?gunzip(1):

$ gunzip filename.gz

Це видасть розгорнуту версію файлу - filename - закінчення .gz при цьому зникає. Насправді, gunzip є частиною тієї самої gzip і еквівалентна команді `gzip -d'.

bzip2

?bzip2(1), це альтернативна програма стиснення, що постачається зі Slackware. Вона використовує відмінний алгоритм компресії від gzip, що має як переваги, так і недоліки. Основною перевагою є те, що стиснені програмою bzip2 файли майже завжди менші розміром за аналогічні gzip-файли. В деяких випадках, різниця дуже помітна. Це може виявитись значною перевагою для людей з повільним даялап-сполученням. Також, вважається правилом хорошого тону, для зменшення навантаження на FTP-сервери, завантажувати файли .bz2 замість .gz.

Недоліком bzip2 є те, що програма вимагає інтенсивнішого використання процесору і більше часу на стиснення чи розгортання, у порівнянні з gzip. Ви повинні мати на увазі це. Як правило, більшість серверів саме тому надають файли до завантаження у обох форматах - .gz і .bz2.

Використання bzip2 майже у всьому співпадає з gzip. Так само як gunzip, bunzip2 тотожна команді `bzip2 -d'. Основна відмінність полягає у тому, що bzip2-файли використовують закінчення .bz2.

$ bzip2 filename
$ bunzip2 filename.bz2
$ bzip2 -9 filename

tar

tar(1) - це GNU програма для створення архіву, тобто архіватор. Її функція полягає у тому, що вона може взяти декілька файлів і каталогів і створити один файл з усіх. Це дозволяє вам об'єднати в один файл цілі ієрархії файлів і каталогів, чого неможливо досягти попередньо-розглянутими gzip і bzip2. Програма tar включає багаточисельні опції командного рядка, які ви знайдете у сторінці посібника до неї. Цей розділ розгляне лишень найуживаніші опції tar.

Найпоширенішим використанням tar є розархівування і розвернення стиснених архівів, які ви, можливо, завантажити з веб-сайту чи FTP або самі створили. В Інтернеті ви знайдете дуже багато файлів із закінченням .tar.gz. Останні загальновідомі як "tarball". Їх створено через архівування декількох файлів з використанням tar, після чого отриманий об'єднаний файл стиснено за допомогою gzip. Ви можете також натрапити на файли з закінченням .tar.Z. Вони означають те саме, що й .tar.gz і зустрічаються, звичайно, на старших Unix-системах.

Також загальнопоширеним форматом є .tar.bz2. Вихідні тексти ядра Лінукс частіше розповсюджуються саме у цьому форматі, оскільки він забезпечує швидше завантаження. Як ви здогадались, у цьому випадку для стиснення архіву використовується bzip2.

Щоб вилучити всі файли з архіву, ви можете використати tar з декількома опціями командного рядка. Стиснені програмою gzip архіви вимагають опції -z команди tar, яка вказує спочатку пропустити архів через gunzip. Тож, найпоширенішою командою командою у цьому випадку буде:

$ tar -xvzf filename.tar.gz

Окрім прапорця -z ми бачимо ще кілька опцій. Що вони означають? Опція -x вказує добування (англ. extract) з архіву. Вона є важливою, оскільки у даному випадку ми саме видобуваємо окремі файли і каталоги з об'єднаного архіву, тобто ділимо архів на частини, повертаючи його до первісного стану. Необов'язкова опція -v вказує на багатослівний стан, тобто виводити на екран назви всіх видобутих з архіву файлів. Для додаткової докладності, ви можете навіть застосувати -vv i, навпаки, для пригнічення повідомлень не вживати цієї опції взагалі. Опцію -z ми вже розглянули. І, на-кінець, обов'язкова опція -f вказує tar, що саме наступний ланцюжок знаків на командному рядку являється назвою файлу-архіву над яким відбудеться дія.

Існує також декілька інших способів написання тієї самої команди. На старших системах, з відсутньою GNU tar, ви можете побачити цю команду розписану як:

$ gunzip filename.tar.gz | tar -xvf -

Ця команда розгорне файл і пошле вивід tar. Вивід gzip у цьому випадку передається через конвеєр tar для розархівації. Остання риска "-" означає, що tar візьме свій ввід зі стандартного пристрою вводу, який надійде через конвеєр у вигляді потоку даних, генерованих gzip.

Як правило, риска перед прапорцями tar не є обов'язковою (не плутайте тільки з кінцевою рискою-вказівником стандартного вводу), тож нашу першу команду можна також написати як

$ tar xvzf filename.tar.gz

У випадку архівів, стиснених bzip2, використовуються ті самі опції, за виключенням -z, яку слід поміняти на -j:

$ tar -xvjf filename.tar.bz2

Важливо нагадати, що tar помістить видобуті з архіву файли у поточний каталог. Тож якщо, скажімо, ваш стиснений архів знаходиться у каталозі /tmp і вам необхідно розархівувати його у власній домашній директорії, тоді існує декілька способів цього добитись. Перший, це перенести архів з /tmp у домашній каталог і після цього розархівувати. Другий, це, знаходячись у домашньому каталозі, вказати шлях до архіву у /tmp. І, на-кінець, третій, це використати опцію -C, що вказує де саме розмістити видобуті файли з архіву.

$ cd $HOME
$ cp /tmp/filename.tar.gz .
$ tar -xvzf filename.tar.gz

$ cd $HOME
$ tar -xvzf /tmp/filename.tar.gz

$ cd /
$ tar -xvzf /tmp/filename.tar.gz -C $HOME

Всі три приклади вище здійснюють те саме. У всіх трьох випадках, архів видобувається у домашньому каталозі користувача, а оригінальний, не-стиснений архів залишається на тому самому місці.

До цих пір ми розглядали лишень як розгортати і видобути файли з архіву. Час дізнатись, як створювати їх. Програма tar дозволяє нам створити стиснений архів однією дією. У більшості випадків, усе що необхідно зробити, це поміняти прапорець -x на -c:

$ tar -cvzf filename.tar.gz .

Остання команда вказує tar через опцію -c створити архів файлів, що знаходяться у поточному каталозі (позначеного крапкою), тоді як відома нам опція -z, цього разу, пропускає отриманий архів через gzip для його стиснення. Зверніть увагу, що назву архіву, який ми хочемо створити (filename.tar.gz), потрібно вказати першою, до назви файлів або каталогів які увійдуть у архів.

Без опції -f програма tar пише на стандартний пристрій виводу, замість збереження до файлу. Це вигідно для передачі виводу через конвеєр іншим програмам, як у наступному прикладі:

$ tar -cv filename.tar . | gpg --encrypt

Ця команда створює не-стиснений архів поточного каталогу, передаючи вивід програмі gpg для шифрування і стиснення. Отриманий архів неможливо буде прочитати комусь іншому окрім особи, яка знає таємний ключ GPG.

zip

Нарешті, існують два знаряддя для обробки файлів ZIP. Останні дуже поширені у світі Віндовса. Лінукс надає дві програми: ?zip(1) для стиснення і ?unzip(1) для розгортання файлів у форматі ZIP.

$ zip name 

Це створить стиснений файл name.zip, що міститиме всі файли поточного каталогу. Програма zip додасть закінчення .zip автоматично, тож немає змісту включати його у назву файлу. Ви також можете рекурсивно стиснути всі файли і каталоги у поточному каталозі наступною командою:

$ zip -r name 

Розгорнути стиснений zip програмою файл дуже легко:

$ unzip name.zip

Останнє видобуде всі файли з name.zip, можливі директорії включно.

Знаряддя zip включають додаткові опції для створення саморозгортуваних архівів, звільнення від архівування певних файлів, керування розміром стисненого файлу, виводу того що повинно відбутися, тощо. Загляніть до сторінки посібника ?zip(1) і ?unzip(1) щоб дізнатися про ці опції.