Il wiki con tanti suggerimenti tecnici
Il comando rsync permette di sincronizzare files e directory localmente (sulla stessa macchina) o su macchine remote collegate in rete. E’ veloce ed efficiente, e copia solamente i file che sono stati modificati.
Sintassi:
rsync <opzioni> <sorgente> <destinazione>
Cominciamo a vedere le opzioni più interessanti:
--list-only
Simula, visualizza i file che verrebbero sincronizzati.
-a
I files vengono trasferiti in modalità "archivio" per assicurare che vengano mantenuti i symbolic links, i devices, gli attributi, i permessi, owner e group e che le directory vengano copiate compreso il loro contenuto.
-e ssh
impone l’utilizzo di una connessione sicura per l’eventuale accesso remoto
--stats
stampa alcune informazioni statistiche sull’esito dell’operazione di copia
--delete
cancella nel path di "destinazione" quei files che non sono più presenti nel path "sorgente"
--exclude
per escludere eventuali cartelle o file (sono ammessi i caratteri speciali, ad esempio *)
ATTENZIONE!!! escludendo una directory verra' esclusa qualsiasi directory con lo stesso nome lugo tutta la path e non solo la prima, esempio:
--exclude dir1
escludera' /root/dir1 e /root/other/path/dir1
--delete-excluded
cancella eventuali file che sono stati esclusi nella copia ma che sono presente comunque nella destinazione (quando si usa l'optizione --exclude)
--progress
--info=progress2 (piu' informazioni)
durante il trasferimento, rsync mostra una riga con i bytes trasferiti, la percentuale trasferita, la velocita' di trasferimento e il tempo rimanente presunto
--copy-links
Quando rsync incontra un sym link, copia l'effettivo contenuto.
--safe-links
Dice a rsync di ignorare qualsiasi sym link che punti fuori l'albero di directory che si sta copiando. Con questa opzione vengono anche ignorati i symlink con percorso assoluto.
--inplace
non crea file temporanei, ma fa le modifiche direttamente sul file originario.
--partial
in caso di interruzzione il trasferimento parziale non viene cancellato.
--min-size --max-size
esclude file di dimensione minima/massima (es. --min-size=100K --max-size=1M)
-u
aggiorna i file di destinazione se meno recenti di quelli sorgenti
-n
solo simulazione, nessuna modifica reale
Modalità backup: Nella modalita' backup verranno aggiornati i files che sono cambiati dall'ultimo backup, utilizzando la stessa directory del precedente backup, ma dei files vecchi verra' tenuta traccia a seconda dell'opzione che viene passata insieme a bakup.
--backup
Abilita la modalità backup. Fa il backup della directory, tenendo traccia dei files cancellati o variati dall'ultimo backup.
--suffix=SUFFIX
E' il suffisso che viene aggiunto al file di cui viene fatto il backup. Di default ~.
--backup-dir=DIR
Puo' essere specificato insieme al suffisso ed indica la sottodirectory in cui verranno spostati i files di backup, ad esempio, $(date +%Y-%m-%d). Nel caso venga omessa l'opzione --suffix, i files avranno lo stesso nome dei files originali. I path sorgente e destinazione possono essere indicati in almeno due modi.
path
indica un percorso locale
host:path
indica un percorso remoto, esempio:
rsync -a -e ssh --stats --delete -v --exclude "*bak" /mnt/E root@192.1.1.10:/mnt/backup
rsync -a --stats --delete -v --exclude *.zip --delete-excluded /mnt/E/1/Programmi/ /mnt/lB/disk/E/1/Programmi/
NOTE: rsync va installato sia sul server che sul client. Sul server va installato il pacchetto ssh
ATTENZIONE: nell'esempio /mnt/E e' diverso da /mnt/E/
Altri esempi:
find /root | grep "^/root/\." > /tmp/exclude.txt
rsync -a --delete -v /root --exclude-from=/tmp/exclude.txt --max-size=100M /mnt/$DISK/disk/system/root.other
Esclude tutti i file contenenti nel file di testo exclude.txt Problemi con la FAT32: Copiare i file in una destinazione FAT32 da una sorgente EXT3 e' fortemente sconsigliata Ad esempio se nella sorgente abbiamo le cartelle: /mnt/lA/Primo /mnt/lA/PRIMO Queste non possono essere copiate in FAT32 poiche' coinciderebbero ovvero non e' case sensitive: /mnt/E/Primo = /mnt/E/PRIMO Inoltre le proprieta' dei file e gruppo non sono conservate ed genererebbero un errore con il comando chown. Una possibile soluzione puo' essere utilizzanto di comandi --no-owner e --no-group che permette di non conservare la proprieta' del file:
rsync -a --no-owner --no-group --stats --delete -v /mnt/lA/1/Programmi/ /mnt/E/1/Programmi/
Va inoltre utilizzata l'opzione
--modify-window=2
per la diversa rappresentazione del timestamp quindi si da una tolleranza di 2 secondi
Copia di cartelle con rsync e non con cp:
E' da preferire rsync al comando cp, questo perche' in caso di interruzione del processo di copia rsync garantisce che eventuali file copiati male vengono sostituiti e vengono copiati i soli file che non sono ancora stati copiati:
rsync -av /mnt.sd d1603/
Non utilizzate quindi il comando: cp -aRv /mnt.sd d1603/
Trasferimento dati da disco a disco:
rsync -avxHAX --progress /disk1/ /disk2
il significato delle opzioni:
-a: tutti i file, con autorizzazioni, ecc.
-v: dettagliato, menziona i file
-x: rimanere su un file system
-H: preserva i collegamenti reali (non inclusi con -a)
-A: preserva ACL / permessi (non inclusi con -a)
-X: conserva gli attributi estesi (non incluso con -a)
rsync -auvxHAX --progress /disk1/ /disk2
-u:
verifica che i file da sovrascrivere nella directory di destinazione siano piu' vecchi (copia solo i file con un tempo di modifica più recente)
Indietro