Qualche appunto su rsync
Premetto che non ho mai utilizzato rsync come server e non ho alcuna esperienza nell'approntare un server pubblico o privato che sia; aggiungo che mi sono limitato a leggere la pagina di manuale in fretta prendendo nota solo delle opzioni che mi interessavano.
rsync può essere utilizzato per copiare file e directory tra due computer ma anche tra sezioni di uno stesso filesystem locale. Tralasciando quest'ultimo caso, per la copia da e per un computer remoto la faccenda si differenzia a seconda che il computer remoto abbia un server rsync attivo e raggiungibile oppure no.
Ipotizzando che ci sia un server rsync, per copiare dal pc remoto la sintassi è:
rsync [opzioni] <uri remoto> <uri locale>
Purché rsync sia installato su entrambi i computer, è possibile utilizzarlo anche se non è configurato da alcuna parte come server utilizzando una shell remota (di default rsh (!)[1] od il valore della variabile d'ambiente RSYNC_RSH) con l'opzione -e; a quest'opzione si può passare come argomento il nome di un programma da utilizzare al posto di rsh, come per esempio ssh, con la possibilità di specificare direttamente nell'argomento eventuali parametri con i quali invocare il programma.
Prima di passare alle opzioni una nota su <uri remoto>: se l'indicazione termina con /, rsync copierà il contenuto della directory di livello inferiore; se l'indicazione non termina con /, rsync copierà l'intera directory di livello inferiore. Esempio:
rsync -a rsync://ftp.slackware.at/slackware/slackware-9.0/extra ~/bho
[in ~/bho si troverà una copia di extra/ con tutto il suo contenuto]
rsync -a rsync://ftp.slackware.at/slackware/slackware-9.0/extra/ ~/bho
[in ~/bho si trovarà solo il contenuto di extra/]
L'uri indicante un server rsync comincia con rsync://
Alcune opzioni:
| -a, --archive: | abilita la ricorsione (altrimenti rsync non è ricorsivo), il mantenimento per quanto possibile di permessi, proprietario, data ed ora dei file originali e la creazione di eventuali symlink e device uguali agli originali |
| -u, --update: | vengono copiati solo i file più recenti di quelli di destinazione (senza quest'opzione ogni esecuzione di rsync copierebbe, sovrascrivendoli, anche i file che non sono stati modificati) |
| --delete --delete-after --delete-excluded: |
tutte indicano la volontà di cancellare dall'uri di destinazione i file che non esistono più nell'uri sorgente (altrimenti i file "vecchi" rimangono dove sono); con --delete la cancellazione avviene prima del trasferimento dei nuovi file, con --delete-after avviene dopo che i nuovi file sono stati copiati nella destinazione; --delete-excluded abilita la cancellazione dei file che sono stati esclusi dal trasferimento |
| -v, --verbose: | aumenta la quantità di messaggi prodotti (normalmente non è molto informativo); una sola -v produce l'elenco dei file rimossi e copiati ed un riassunto finale, mentre due -v elencano anche quelli "saltati" ed un riassunto finale più corposo; sconsiglio di usare più di due -v :-) (una è più che sufficiente) |
| --exclude=<pattern>: | permette di indicare quali file, directory o tipi di file non devono
essere trasferiti; l'uso è molto flessibile (son circa 120 righe nella
pagina di manuale!); tanto per fare un esempio:
rsync -av --exclude "source/" --exclude "*.asc" \
rsync://ftp.slackware.at/slackware/slackware-current/extra ~/bho
|
Piccola nota finale: se ti venisse in mente di utilizzare rsync con -v nel crontab di qualche utente, ricordati (io spesso lo dimentico!) che il crond utilizzato dalla Slackware non consente la comoda indicazione MAILTO=<email> che si può utilizzare con quello distribuito da Debian, Red Hat, Mandrake, etc., ma si riesce a supplire agevolmente mettendo rsync in pipe con mailto od elm.
[1] A partire dalla versione 2.6.0, la shell remota di default è ssh.
Ultima modifica: Mon Apr 25 18:03:20 CEST 2005