Яка різниця між усіма типами архівів .tar?


16

Чи може хто-небудь сказати мені, що складається з такою кількістю архівів, і чим вони відрізняються?

Там, принаймні , п'ять , що я можу думати, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

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

Відповіді:


18

.gz, .xz, .bz2, .7z, .lz, .zСуфікси використовуються , щоб зробити ясно , що файл стиснутий з зазначеним алгоритмом стиснення. Його використання не обмежується .tarфайлами, ви також побачите такі файли, як initrd.gz(стислий початковий рамдиск) або manual.txt.gz(для стислого текстового документа). Ви також можете побачити, file.tgzщо також вказує на стиснутий gzip тарбол (як file.tar.gz).

Розширення файлу є умовою, воно не обов'язково описує вміст файлу. Щоб перевірити, який файл ви обробляєте, скористайтеся fileкомандою. Приклад:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

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


8

На додаток до відповіді @Lekensteyn, я хотів би додати, що така поведінка заснована на " Зробити одне і добре це робити" - філософія - tarпрограма вміє об'єднувати кілька файлів в один потік (з .tarрозширенням), gzipвміє стискати компрес один файл (додавання .gzрозширення) *. Комбінуючи ці інструменти, ви можете створити команду, яка стискає кілька файлів в один .tag.gzфайл.

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

Так само tarнічого не знає про SSH, але комбінуючи команди, ви можете створити скрипт, який архівує файли, завантажує їх на віддалену машину через SSH та скасовує їх там.

Порівняйте це з zipкомандою, яка не виникла в Unix - вона має вбудовані інструменти для стиснення цілих каталогів, шифрування файлів, розділення архіву на менші zipfiles тощо.


(Виноска) - так, tarвміє GZIP або BZIP файли самостійно , використовуючи -zі -jперемикачі, вони були додані для зручності, і GNU дьогтю фактично нерест gzipабо bzip2як новий процес.


Приклад: команди tar c dir/ | gzip > dir.tar.gzі tar czf dir.tar.gz dir/команди роблять те саме. Приклад , в якому tarпоєднується з SSH і tar(знову): tar cz Documents/ | ssh user@host 'tar xz(Rsync буде еквівалентно: rsync -a Documents user@host:)
Lekensteyn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.