Oprócz odpowiedzi @Lekensteyn, chciałbym dodać, że to zachowanie opiera się na Zrób jedną rzecz i zrób to dobrze filozofię - tarprogram wie, jak umieścić wiele plików w jednym strumieniu (z .tarrozszerzeniem), gzipwie, jak skompresować pojedynczy plik (dodanie .gzrozszerzenia) *. Łącząc te narzędzia, możesz utworzyć polecenie, które kompresuje wiele plików w jeden .tag.gzplik.
To podejście jest bardzo elastyczne - możesz łączyć kilka standardowych poleceń Uniksa, aby wykonywać różne czynności. Na przykład, jeśli napiszesz lepszy program do kompresji plików, nie musisz go modyfikować, taraby umożliwić mu tworzenie .tar.mymegazipplików - zamiast tego po prostu wysyłasz tardane wyjściowe do kompresora.
Podobnie, tarnic nie wie o SSH, ale łącząc polecenia, możesz utworzyć skrypt, który archiwizuje pliki, przesyła je do zdalnego komputera za pośrednictwem SSH i tam je archiwizuje.
Porównaj to z zippoleceniem, które nie pochodzi z Uniksa - ma wbudowane narzędzia do kompresji całych katalogów, szyfrowania plików, dzielenia archiwum na mniejsze pliki zip itp.
(przypis) - tak, tarjest w stanie sam skompresować pliki gzip lub bzip za pomocą -zi -jprzełączników, zostały one dodane dla wygody, a tar GNU faktycznie się spawnuje gziplub bzip2jest nowym procesem.
tar c dir/ | gzip > dir.tar.gzitar czf dir.tar.gz dir/polecenia robią to samo. Przykład, w którymtarłączy się ssh itar(ponownie)tar cz Documents/ | ssh user@host 'tar xz(równowartość rsync będzie:rsync -a Documents user@host:)