На додаток до відповіді @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:)