GNU/Linux >> Linux Esercitazione >  >> Linux

Motivi per cui rsync NON trasferisce tutti i file?

Ci sono 2 parti in questa domanda. Innanzitutto, perché c'è una differenza tra "Numero di file" e "Numero di file trasferiti". Questo è spiegato nella manpage di rsync:

Numero di file :è il conteggio di tutti i "file" (in senso generico), che include directory, collegamenti simbolici, ecc.

Numero di file trasferiti :è il numero di file normali che sono stati aggiornati tramite l'algoritmo di trasferimento delta di rsync, che non includere directory create, collegamenti simbolici e così via .

La differenza qui dovrebbe essere uguale alla quantità totale di directory, collegamenti simbolici, altri file speciali. Quelli non sono stati "trasferiti" ma semplicemente ricreati.

Ora per la seconda parte, perché c'è una differenza di dimensioni con du. du mostra la quantità di spazio su disco utilizzata da un file, non la dimensione del file. Lo stesso file può occupare una diversa quantità di spazio su disco, se ad esempio le dimensioni dei blocchi dei filesystem sono diverse.

Se sei ancora preoccupato per l'integrità dei dati, un modo semplice per esserne sicuri è creare hash per tutti i tuoi file e confrontare:

( cd /home/hholtmann && find . -type f -exec md5sum {} \; ) > /tmp/hholtmann.md5sum
( cd /media/wd750/c51/home/ && md5sum -c /tmp/hholtmann.md5sum )

A tutte le altre povere anime perdute che lavorano dalle vacanze nel cuore della notte,

--checksum fa in modo che rsync controlli effettivamente se ci sono modifiche nei file, altrimenti controlla i timestamp e le dimensioni dei file e lo chiama un giorno,

questo è sufficiente nel 99,9% dei casi e ti fa bruciare all'inferno per il resto dello 0,01% finché non lo capisci


Potrei anche aggiungere qualcosa che ho imparato.

Stavo usando il comando rsync /path/source/* /path/to/destination/* (notare il globbing). È stato imbarazzante perché il 90% dei miei file era stato trasferito con poche eccezioni (anche essendo nella stessa cartella di alcuni che sono stati trasferiti). Dopo aver rimosso il * dalla fonte e dalla destinazione, sono stati tutti trasferiti. ¯\_(ツ)_/¯


Linux
  1. Rimuovere tutti i file/directory tranne un file?

  2. Eliminare tutti i file in una directory il cui nome non corrisponde a una riga in un elenco di file?

  3. Confronta le directory ma non il contenuto dei file?

  4. Escludere tutti i file di sottolineatura punto da Rsync?

  5. Come trovare tutti i file che non contengono una stringa di testo?

Riprendi i file parzialmente trasferiti su SSH utilizzando Rsync

rsync N file più recenti in una directory

bash - rimuove tutte le directory (e i contenuti) ma non i file in pwd

Come impostare le autorizzazioni file predefinite per tutte le cartelle/file in una directory?

Come chiamare ripetutamente rsync finché i file non vengono trasferiti correttamente

Esiste un'alternativa GUI a Putty SSH per il trasferimento di file?