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