Архівування

Часто ресурси складаються з кількох файлів — наприклад, програма може йти разом із необхідними бібліотеками, ліцензією, документацією тощо. Для простішого перенесення та зберігання корисно корисно обєднати ці файли в одний файл-пакунок. Це ціль архіватора (пакувальника).

Процес утворення пакунку чи архівного файлу називається архівуванням чи пакуваням. Відновлення початкових фалів з архіву називається розпакуванням чи розархівуванням.

Базовий архіватор просто бере список файлів і об'єднує їх вміст послідовно до пакунку. Також пакунок має містити дані, принаймні, про назви та довжину початкових файлів, для правильного відновлення. Більшість архіваторів також зберігають мета-інформацію про файл, надану операційною системою (таку як - власник файлу; час створення, останньої зміни, доступу; права доступу).

Засоби Юнікс ar (від "archiver"), tar ("tape archiver"), cpio ("copy in/out") є прикладами таких базових архіваторів.

Увага, бувшим віндузятникам: архівування і стиснення в Лінуксі дві різні задачі, для яких передбачені різні програми!

Стиснення

Багато архівторів, також забезпечують стиснення даних без втрат (lossless data compression). Оскільки основна ціль архівування - краще перенесення і зберігання, це дуже доцільно. Стиснені архіви забирають менше місця та полоси пропускання і тому забезпечують швидкіше та дешевше перенесення і зберігання.

Через велику кількість різних алгоритмів стиснення, існуює багато несумісних архівних форматів, такі як ace, arj, lha, rar, zip.

Користувачі базових архіваторів досягають подібної мети стисненням результату пакування (і розтисненням перед розпакуванням). Tar підтримує запуск програми (роз/с)тиснення , так ніби tar сам підтимує стиснені архіви. Цей підхід має наступні переваги:

  • Це відповідає концепції набору знарядь Юнікс, що кожна програма має виконувати просте завдання, але робити це відмінно. При наявності кращого стискувача, користувачі можуть відразу його вживати, не змінюючи архіватор.
  • Оскільки стискається цілий архів, дублювання (надмірність) поміж стискуваними файлами зменшується.

Архіватори у Linux

У ?Linux типовий архіватор tar та стискувачі - ?bzip2 і gzip. Bzip2 стискає сильніше за gzip, але як правило потребує більше часу для стиснення та розтиснення. Також є архіватори arj, lha, p7zip, ?rar, ?zip та деякі інші.

Для зручної роботи з архівами можна використовувати такі програми як файловий менеджер ?mc, ark з ?KDE, file-roller з ?GNOME, що надають інтуїтивний інтерфейс до можливостей консольних архіваторів.

Запуск tar

Швидкий огляд ключів tar:

  • x (extract) -- витягти з архіву
  • c (create) -- створити архів
  • f (file) -- писати/читати архів до/з вказаного файлу. Якщо не вказати, буде використано типовий канал введення/виведення, тобто термінал.
  • j -- фільтрувати через bzip2
  • z -- фільтрувати через gzip
  • t -- список файлів в архіві
  • v -- виводити більш детальні повідомлення

Перегляд вмісту архіва:

  • нестисненого -- tar tf архів.tar
  • стисненого bzip2 -- tar tjf архів.tar.bz2
  • детально про стиснений gzip-ом архів -- tar tvzf архів.tgz

Розпакування архіву:

  • нестисненого -- tar xf архів.tar
  • стисненого bzip2 показуючи, які файли розпаковуються -- tar xvjf архів.tar.bz2
  • стисненого gzip -- tar xzf архів.tar.gz
  • якщо після назви архіву вказати перелік файлів чи тек, то лише вони будуть витягнені з архіву

Створення архіву:

  • без стиснення -- tar cf архів.tar файл_1 .. файл_n
  • зі стисненням bzip2 -- tar cjf архів.tar.bz2 файл_1 .. файл_n
  • зі стисненням gzip -- tar czf архів.tar.gz файл_1 .. файл_n

При створенні архіву цілком на вашій совісті дати йому розширення, наприклад, .tar.gz -- програма за цим не слідкує.

Увага: в юніксах прийнято, щоб в корені архіву містилася лише одна директорія (або файл)!