rsync
Introduzione
A mio giudizio una buona strategia di backup consiste nella copia dei file contenuti nelle directory /etc
e /home/${nomeUtente}
, in modo che sia preservata la situazione attuale: chiameremo sorgente l'insieme dei file di cui bisogna fare il backup, chiameremo backup la destinazione della sorgente, destinazione che puo' essere un hard disk o un server di backup. L'idea e' la seguente:
i file che non esistono piu' alla sorgente devono essere cancellati in backup.
i file in backup che devono essere scritti sono quelli nuovi (ossia che sono creati in sorgente in data successiva a quella dell'ultimo backup eseguito) o quelli modificati (ossia che differiscono dai dati presenti in backup per data dell'ultima modifica, lunghezza di byte ecc..).
rsync non copia tutti i byte di tutti i file ogni volta che viene lanciato, ma usa un algoritmo per dererminare solo quello che serve, in modo da risparmiare tempo e banda: in questo modo si puo' fare il mirroring di grandi quantita' di dati e l'esecuzione di backup incrementali che non crescono in maniera indefinita. La prima volta che rsync esegue la copia dei file e' piu' lento del comando cp
, ma nelle copie successive si puo' osservare che vengono trasferite solo le informazioni relative alle differenze in byte dei file confrontati.
Utilizzo
Per realizzare il backup che rispetti i punti precedenti si puo' usare rsync nel modo seguente:
$ rsync -avz --delete ${percorsoSorgente} ${percorsoDestinazione}
-a: abbreviazione di archivio, e' un insieme di parametri, per la precisione -rlptgoD. -r copia ricorsivamente nelle sottodirectory, -l copia anche i link simbolici, -p mantiene sui file di destinazione i permessi presenti sui file di sorgente al momento della copia, -t mantiene la data di ultima modifica, -g preserva l'attributo di gruppo dei file di sorgente, -o preserva il proprietario dei file di sorgente (opzione attiva solo se rsync e' eseguita come root), -D preserva i devices (solo se rsync e' eseguito da root).
-v
: verbose, vengono mostrate a video le operazioni che rsync sta facendo.-z
: zip, comprime i file in trasmissione, in modo da occupare meno banda di trasferimento, buona cosa se si fa un backup attraverso una LAN.--delete
: cancella i file che sono presenti in backup ma che non lo sono piu' in sorgente al momento del lancio di rsync.
Esempi ==
$ rsync -avz --delete /home/${utente} utenteBackup@backupServer:/backup/
Copia la directory ${utente}
(con le sue sottodirectory) sul server backupServer nella directory /backup/ accedendo in modalita' ssh come utente utenteBackup.
# rsync -av --delete /etc /mnt/hd
Copia la directory /etc
(e le sue sottodirectory) sull'hard disk montato su /mnt/hd
.
Strategie di backup
Tutte le fasi seguenti devono essere fatte entro lo stesso giorno, in modo che non vengano aggiunti o editati file durante queste fasi.
Da chiavetta a portatile (update)
I file in destinazione che hanno lo stesso nome e sono diversi, vengono sostituiti con quelli di origine (e gli vengono assegnati i permessi di root). Viene anche creata una copia di backup di detti file.
# rsync -rbv /mnt/usb/utente/${dir} /home/utente
Si arriva dunque ad una situazione in cui i file nuovi si riconoscono perche' hanno i permessi di root, quelli modificati finiscono per ~
(e vanno editati per poi essere cancellati).
# find /home/utente -iname "*~"
# diff /home/utente/${file} /home/utente/${file~}
Una volta risolto il conflitto, si puo' cancellare il file che termina per ~
.
- Da portatile ad hd-portatile (rilascio)
Copia speculare della directory /home/utente
su hd-portatile:
# rsync -av --delete /home/utente /mnt/usb/
# rsync -av --delete /etc /mnt/usb/
# mount /boot
# rsync -av --delete /boot /mnt/usb/
# umount /boot
- Da hd-portatile a pc domestico (update)
Come da chiavetta a portatile:
# rsync -rvtb /mnt/usb/utente/${dir} /home/utente/
Da pc domestico a hd-backup
Come da portatile ad hd-portatile:
# rsync -av --delete /home/utente /mnt/usb/
# rsync -av --delete /etc /mnt/usb/
# mount /boot
# rsync -av --delete /boot /mnt/usb/
# umount /boot
Da pc domestico a hd-portatile (rilascio)
# rsync -rvt --delete /home/utente/${dir} /mnt/usb/utente/
Da hd-portatile a portatile (rilascio)
Come da pc domestico a hd-backup
# rsync -av --delete /mnt/usb/utente/${dir} /home/utente/
- Da portatile a chiavetta (rilascio)
Come da pc domestico a hd-backup, --no-o
--no-g
non preserva gli attributi di gruppo e di owner:
# rsync -av --delete --no-o --no-g utente /mnt/usb/
Nessun commento:
Posta un commento