Cosa c'è di più veloce, cp -R o disimballaggio dei file tar.gz?

Ho alcuni file tar.gz che contano molti gigabyte su un sistema CentOS. La maggior parte dei file tar.gz sono in realtà piuttosto piccoli, ma quelli con immagini sono grandi. Uno è 7.7G, un altro è di circa 4G e una coppia intorno a 1G.

Ho disimballato i file una volta e ora vorrei una seconda copia di tutti questi file.

Ho supposto che la copia dei file non sfogliati sarebbe più veloce di ricomporre loro. Ma ho iniziato a eseguire cp -R circa 10 minuti fa e finora less di 500M è copiato. Mi sento sicuro che il process di disimballaggio è stato più veloce.

Ho ragione?

E se sì, perché? Non sembra avere senso che l'espansione sarebbe più veloce di semplicemente duplicare le strutture esistenti.

2 Solutions collect form web for “Cosa c'è di più veloce, cp -R o disimballaggio dei file tar.gz?”

Si consideri i due scenari:

  • La copia richiede di leggere il file completo dal disco e di scrivere sul disco
  • Tar-Gzip richiede di leggere un file più piccolo dal disco, decomprimere e scrivere su disco.

Se la CPU non viene tassata dal process di decompressione, è ragionevole che le operazioni di I / O stanno limitando. Con tale argomento (e poiché wherete scrivere la stessa quantità in entrambi i casi), leggere un file più piccolo (tar.gz) richiede less tempo di leggere un file più grande. Inoltre il tempo viene salvato perché è più veloce leggere un singolo file rispetto a leggere molti piccoli file.

Il tempo salvato dipende dalla differenza tra il tempo necessario alla lettura (I / O) e la decompressione (CPU). Quindi, per i file che sono minimamente compressibili (ad esempio file già compressi come mp3, jpg, zip, ecc.), In cui il tempo necessario per la decompressione è probabile che sia maggiore del tempo salvato sull'operazione di lettura più lento per decomprimere che copiare.

(Vale la pena notare che più lenta l'I / O, più tempo verrà salvato utilizzando il file compresso – uno scenario di questo tipo sarebbe se la fonte e l'objective dell'operazione di copia sono sullo stesso disco fisso.)

Leggere un file molto piccolo è molto più veloce di leggere un gruppo di file di grandi size. Questo è generalmente vero anche se la CPU deve decomprimere.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.