È strano che nessun altro abbia menzionato che le versioni moderne di GNU tarti consentono di comprimere mentre stai raggruppando:
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
Puoi anche usare il compressore di tua scelta a condizione che supporti le opzioni ' -c' (to stdout, o from stdin) e ' -d' (decompress):
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
Ciò consentirebbe di specificare qualsiasi compressore alternativo.
[ Aggiunto : se si stanno estraendo da gzipo bzip2file compressi, GNU li tarrileva automaticamente ed esegue il programma appropriato. Cioè, puoi usare:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
e questi saranno gestiti correttamente. Se utilizzi un compressore non standard, devi specificarlo quando esegui l'estrazione.]
Il motivo della separazione è, come nella risposta scelta, la separazione dei compiti. Tra le altre cose, significa che le persone potevano usare il cpioprogramma ' ' per impacchettare i file (invece di tar) e quindi utilizzare il compressore preferito (una volta, il compressore preferito era pack, in seguito lo era compress(che era molto più efficace di pack), e quindi gzipche girava intorno a entrambi i suoi predecessori, ed è completamente competitivo con zip(che è stato portato su Unix, ma non è nativo lì), e ora bzip2che, nella mia esperienza, di solito ha un vantaggio del 10-20% gzip.
[ Aggiunto : qualcuno ha notato nella sua risposta che cpioha convenzioni divertenti. È vero, ma fino a quando GNU non ha tarottenuto le opzioni pertinenti (' -T -'), cpioera il comando migliore quando non si desiderava archiviare tutto ciò che si trovava sotto una determinata directory: si poteva effettivamente scegliere esattamente quali file erano archiviati. Il rovescio della medaglia cpioè che non solo si poteva scegliere i file - si doveva scegliere loro. C'è ancora un posto dove i cpiopunteggi; può eseguire una copia in situ da una gerarchia di directory a un'altra senza alcuna memoria intermedia:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
Per inciso, l' -depthopzione " " su findè importante in questo contesto: copia il contenuto delle directory prima di impostare i permessi sulle directory stesse. Quando ho controllato il comando prima di inserire l'aggiunta a questa risposta, ho copiato alcune directory di sola lettura (autorizzazione 555); quando sono andato a cancellare la copia, ho dovuto rilassare i permessi sulle directory prima che " rm -fr /new/place" potesse finire. Senza l' -depthopzione, il cpiocomando sarebbe fallito. L'ho ricordato solo quando sono andato a pulire - la formula citata è quella automatica per me (principalmente in virtù di molte ripetizioni nel corso di molti anni). ]