Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Sincronizzazione di file e directory

Una strategia comune per mantenere una copia di backup di un sistema implica mantenere una o più directory sincronizzate con un'altra directory (o directory) situata sul sistema locale (di solito un dispositivo di archiviazione rimovibile di qualche tipo) o su un sistema remoto. Potremmo, ad esempio, avere una copia locale di un sito web in fase di sviluppo e sincronizzarla di volta in volta con la copia “live” su un web server remoto.

Nel mondo simile a Unix, lo strumento preferito per questo compito è rsync. Questo programma può sincronizzare sia le directory locali che remote usando il protocollo di aggiornamento remoto rsync, che permette rsync per rilevare rapidamente le differenze tra due directory ed eseguire la quantità minima di copia richiesta per sincronizzarle. Questo fa rsync molto veloce ed economico da usare, rispetto ad altri tipi di programmi di copia.

rsync viene invocato in questo modo:

rsync opzioni origine destinazione

where source ed destinazione sono uno dei seguenti:


● Un file o una directory locale

● Un file o una directory remota sotto forma di [utente@]host:percorso

● Un server rsync remoto specificato con un URI di rsync://[utente@]host[:porta]/percorso

Nota che l'origine o la destinazione devono essere un file locale. La copia da remoto a remoto non è supportata.

Proviamo rsync su alcuni file locali. Per prima cosa, puliamo il nostro foo directory:


[io@linuxbox~]$ rm -rf pippo/*

[io@linuxbox~]$ rm -rf pippo/*


Successivamente, sincronizzeremo il parco giochi directory con una copia corrispondente in foo:


[io@linuxbox~]$ rsync -av parco giochi foo

[io@linuxbox~]$ rsync -av parco giochi foo


Abbiamo incluso entrambi i -a opzione (per l'archiviazione)-provoca la ricorsione e la conservazione degli attributi del file) e il -v opzione (output dettagliato) per fare a specchio della parco giochi directory all'interno foo. Durante l'esecuzione del comando, vedremo un elenco dei file e delle directory da copiare. Alla fine, vedremo un messaggio di riepilogo come questo:



inviati 135759 byte ricevuti 57870 byte 387258.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.02

inviati 135759 byte ricevuti 57870 byte 387258.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.02


indicando la quantità di copiatura eseguita. Se eseguiamo nuovamente il comando, vedremo un risultato diverso:



[io@linuxbox~]$ rsync -av playgound foo

costruzione dell'elenco dei file ... fatto


inviati 22635 byte ricevuti 20 byte 45310.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.14

[io@linuxbox~]$ rsync -av playgound foo

costruzione dell'elenco dei file ... fatto


inviati 22635 byte ricevuti 20 byte 45310.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.14


Notare che non c'era un elenco di file. Questo è perché rsync rilevato che non vi erano differenze tra ~/parco giochi ed ~/pippo/parco giochi, e quindi non è stato necessario copiare nulla. Se modifichiamo un file in parco giochi e corri rsync ancora una volta:


[io@linuxbox~]$ tocca parco giochi/dir-099/file-Z [io@linuxbox~]$ rsync -av parco giochi foo costruzione dell'elenco dei file ... fatto

parco giochi/dir-099/file-Z

inviati 22685 byte ricevuti 42 byte 45454.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.14

[io@linuxbox~]$ tocca parco giochi/dir-099/file-Z [io@linuxbox~]$ rsync -av parco giochi foo costruzione dell'elenco dei file ... fatto

parco giochi/dir-099/file-Z

inviati 22685 byte ricevuti 42 byte 45454.00 byte/sec la dimensione totale è 3230 l'accelerazione è 0.14


Lo vediamo rsync ha rilevato la modifica e ha copiato solo il file aggiornato.

Come esempio pratico, consideriamo il disco rigido esterno immaginario che abbiamo usato in precedenza con tar. Se colleghiamo l'unità al nostro sistema e, ancora una volta, è montata su /media/BigDisk, possiamo eseguire un utile backup del sistema creando prima una directory denominata /backup sull'unità esterna, quindi utilizzando rsync per copiare le cose più importanti dal nostro sistema all'unità esterna:



[io@linuxbox~]$ mkdir /media/BigDisk/backup

[io@linuxbox~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup

[io@linuxbox~]$ mkdir /media/BigDisk/backup

[io@linuxbox~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup


In questo esempio, abbiamo copiato il / Etc, / Homee / Usr / local directory dal nostro sistema al nostro dispositivo di archiviazione immaginario. Abbiamo incluso il --Elimina opzione per rimuovere i file che potrebbero essere esistiti sul dispositivo di backup che non esistevano più sul dispositivo di origine (questo è irrilevante la prima volta che eseguiamo un backup, ma sarà utile nelle copie successive). Ripetendo la procedura di collegamento dell'unità esterna ed eseguirla rsync comando sarebbe un modo utile (anche se non ideale) per mantenere un backup di un piccolo sistema. Naturalmente, anche qui sarebbe utile un alias. Potremmo creare un alias e aggiungerlo al nostro

File .bashrc per fornire questa funzionalità:


alias backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'

alias backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'


Ora tutto ciò che dobbiamo fare è collegare la nostra unità esterna ed eseguire il di riserva comando per eseguire il lavoro.


 

Il miglior sistema operativo cloud computing su OnWorks: