L'opzione di compressione -z con rsync accelera il backup


37

In rsync, -zcomprime i dati del file durante il trasferimento.

Se ho capito bene, -zcomprimi i file prima del trasferimento e poi decomprimili dopo il trasferimento. Il tempo ridotto durante il trasferimento a causa della compressione supera il tempo di compressione e decompressione?

La risposta alla domanda dipende dal fatto che eseguo il backup su un hdd esterno tramite USB (2.0 o 3.0) o su un server tramite SSH su Internet?


Ricorda anche se il file compresso non differisce molto per dimensioni dal file originale, questo potrebbe essere un enorme sovraccarico.
heemayl

1
Per approfondire ciò che dice heemayl, se il contenuto è in gran parte materiale che è già in un formato compresso (jpeg, mpeg, pacchetti distro, ecc.) La compressione è molto meno efficace. Ho notato man rsyncche esiste in realtà un elenco di suffissi di file che non verranno compressi nemmeno con -z(vedi --skip-compress).
Riccioli d'oro

Risposte:


46

È una domanda generale. La compressione e la decompressione agli endpoint migliora l'ampiezza di banda effettiva di un collegamento?

La banda effettiva (percepita) di un collegamento che esegue compressione e decompressione agli endpoint è una funzione di:

  1. quanto velocemente puoi comprimere (la tua velocità della CPU)
  2. larghezza di banda effettiva della rete

La funzione è descritta con questo grafico 3D, che potresti voler consultare per la tua situazione particolare:

inserisci qui la descrizione dell'immagine

Il grafico ha origine dall'articolo Compression Tools Comparared 2005 di http://www.linuxjournal.com/ .


1
Anche il tuo tipo di dati è un fattore importante (fattore n. 3 mancante dall'elenco). L'articolo collegato utilizza un tipico mix di dati. Il tuo potrebbe non essere tipico. Se stai sincronizzando i file ZIP al 100% (o qualsiasi dato precompresso), probabilmente non vuoi la compressione. Se stai sincronizzando i file di testo al 100%, potresti essere più veloce da comprimere anche se la tua rete è veloce e la tua CPU è lenta. Pesare tutti e 3 i fattori.
Richard Brightwell,

13

Se hai una connessione molto lenta (pensa a GPRS) vuoi sicuramente comprimere i tuoi dati il ​​più possibile, altrimenti la tua connessione rallenterà.

Se hai una CPU molto lenta e una connessione veloce (come un dispositivo di rete incorporato) di solito non vuoi comprimere i tuoi dati, altrimenti la tua CPU rallenterà le cose.


3

Dipende da quanto sono comprimibili i tuoi dati e dalla potenza di elaborazione della tua fonte e destinazione. Un backup completo del disco nella mia esperienza comprime circa il 30-50% delle dimensioni originali, quindi potrebbe valere la pena di provarlo. Altrimenti, non preoccuparti della compressione. Potrebbe valere la pena testare il tasso di compressione pigz -c <your file> | wc -ce confrontare la dimensione restituita con la dimensione originale.


2

Sì, la velocità della connessione determina se la velocità aumenta. Sarà sovraccarico solo per il backup USB, perché non i dischi gonfiano i dati ma il processo che li scrive. Quindi la stessa macchina che la legge e la sgonfia, deve gonfiarsi e scriverla anch'essa. Rsync è ancora due processi, penso, ma la tua memoria per trasferire i dati da un processo all'altro è abbastanza veloce e la CPU ha bisogno di più tempo per comprimerlo (mentre lo leggi nella stessa memoria che in seguito lo passa :)).

La compressione aiuta solo quando hai un mittente e un ricevitore rsync e una rete più lenta nel mezzo. 1 Gbit potrebbe essere già abbastanza veloce quando si dispone di un NAS locale, ad esempio 10 Gbit è già velocità SATA non elaborata. Pertanto la compressione è necessaria solo quando si dispone di una connettività di 100 Mbit o inferiore e ha senso solo quando i dati compressi sono comprimibili.

Penso che rsync possa notare che non funziona su due macchine ma su una e salta la compressione ma non ne è sicuro.


1

tl; dr Su collegamenti a trasferimento lento, comprimi, altrimenti no. Di seguito è riportato un test della velocità di compressione, un collegamento a uno strumento di conversione della larghezza di banda e alcune informazioni.

L'uso della compressione con rsyncaccelera le cose solo se il collegamento intermedio è "abbastanza lento", ovvero se la macchina ad un'estremità è in grado di produrre un flusso di dati compresso abbastanza veloce da saturare il collegamento di comunicazione.

Quindi, qual è il collegamento più lento a cui dovrei usare la compressione per ottenere qualcosa?

Di seguito è riportato un test molto poco scientifico, che mostrerà quanto rapidamente è gzippossibile produrre dati e cosa significhi se è necessario comprimere i trasferimenti di massa della rete in generale.

I dati di input cambieranno notevolmente il risultato del test . Sto usando un normale file non compresso (!) Sul mio computer che potrebbe essere rappresentativo del tipo di dati che trasferisco normalmente su reti. L'uso /dev/zero(producendo zero illimitati) sarebbe fuorviante in quanto un flusso di zero sarebbe molto facile da comprimere e l'uso /dev/randomsarebbe fuorviante per la ragione opposta. Quindi invece uso un file tar della mia $HOME/localdirectory, che contiene il software che ho installato nel mio $HOME. Il file non è compresso di per sé, ma contiene un mix di file binari, piccoli file compressi e file di origine / testo, e lo comprimerei con le impostazioni predefinite perché gzipsi ridurrebbe del 67% da 64 MiB a 22 MiB.

$ gzip -c local.tar | dd of=/dev/null
43092+4 records in
43093+1 records out
22063854 bytes transferred in 2.819 secs (7825741 bytes/sec)

Lo faccio alcune volte per avere un'idea di ciò che potrebbe essere la media e arriva a circa 7800000 byte / s.

Quindi utilizzo un calcolatore della larghezza di banda della rete per vedere in cosa si converte. In questo caso particolare, sembra essere appena sotto la capacità di un collegamento cablato "100 Mb Ethernet", appena più veloce di un uplink Internet "VDSL Download", leggermente più veloce di un collegamento wireless "802.11 [a / g]", e da qualche parte tra "Bluetooth v3.0" (più lento) e "USB 2.0" (più veloce).

Ciò significa che se sto usando la compressione su qualcosa di più veloce di quello, probabilmente la compressione rallenterà il trasferimento del file.

rsyncpotrebbe non utilizzare esattamente le stesse librerie digzip di compressione, ma quanto sopra ti darebbe almeno un suggerimento.

rsyncfa più della compressione però, come sai, e il vero aumento di velocità deriva dal solo trasferimento di [bit di] file che sono cambiati.

Nella mia esperienza, l'uso della compressione con rsyncè diventato sempre meno vantaggioso negli ultimi 10 anni circa, poiché la larghezza di banda delle reti è aumentata (dove sono).

Per fare backup incrementali, consiglio vivamente di investigare l' --link-destopzione (questo non ha nulla a che fare con ciò che viene trasferito, solo con il modo in cui le cose vengono archiviate sulla destinazione). Inoltre, se lo fai su SSH, non utilizzare la compressione se la tua connessione SSH è già compressa e comprimi solo connessioni SSH (tunnel, ecc.) Che si trovano su collegamenti lenti, per gli stessi motivi di cui sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.