Puoi cambiare la velocità di gzip usando --fast
--best
o -#
dove # è un numero compreso tra 1 e 9 (1 è il più veloce ma meno compresso, 9 è il più lento ma più compresso). Di default gzipruns al livello 6.
Il motivo per cui tar impiega così poco tempo rispetto a gzip è che c'è un sovraccarico computazionale minimo nel copiare i tuoi file in un singolo file (che è quello che fa). gzip, d'altro canto, utilizza algoritmi di compressione per ridurre il file tar.
Il problema è che gzip è vincolato (come hai scoperto) a un singolo thread.
Immettere pigz, che può utilizzare più thread per eseguire la compressione. Un esempio di come usarlo potrebbe essere:
tar -c --use-compress-program=pigz -f tar.file dir_to_zip
C'è un bel riassunto dell'opzione --use-compress-program su un sito gemello.
Mi sembra di utilizzare una singola CPU al 100% circa.
Ciò implica che non vi è un problema di prestazioni di I/O ma che la compressione utilizza solo un thread (come nel caso di gzip).
Se riesci a ottenere l'accesso/l'accordo necessari per installare altri strumenti, 7zip supporta anche più thread per sfruttare le CPU multi core, anche se non sono sicuro che ciò si estenda al formato gzip così come al suo.
Se per il momento sei bloccato a utilizzare solo gzip e hai più file da comprimere, puoi provare a comprimerli singolarmente, in questo modo utilizzerai più di quella CPU multi-core eseguendo più di un processo in parallelo. Fai attenzione a non esagerare, però, perché non appena ti avvicini alla capacità del tuo sottosistema di I/O, le prestazioni diminuiranno precipitosamente (al di sotto rispetto a se stessi usando un processo/thread) poiché la latenza dei movimenti della testa diventa significativa collo di bottiglia.