12.28
Se avete molte cartelle e file da sincronizzare (e/o backuppare), che prevedono diverse impostazioni/regole, forse questo script potrebbe esservi utile. Con cRsync si possono associare tutte le impostazioni che passate ad rsync (src, dest e parametri vari) ad un modulo, ovvero ad un semplice nome. Inoltre c’è la possibiltà di impostare un tempo minimo prima di effettuare nuovamente la sincronizzazione e nel caso di una sincronizzazione su macchina remota la verifica che questa sia online.
Per utilizzare questo script dovete comunque conoscere rsync e i suoi parametri, infatti all’interno del file di configurazione di cRsync andrete a scrivere i parametri con cui verrà richiamato il comando rsync.
Ads
L’esempio che descriverò, utilizza un sistema di backup remoto, o più semplicemente c’è una macchina in rete su cui gira il demone rsync.
Questo non vieta di utilizzare rsync senza demone o su ssh, la differenza sta nel fatto che nel caso optiate per la criptazione del trasferimento su ssh, sarete costretti a immettere la password ogni volta che sincronizzate, abbandonando qualsiasi automatizzazione.
Potreste scegliere per un sistema di chiavi pubbliche, non molto sicuro, ma che permette di loggarvi in ssh sulla macchina remota senza immettere la password. Per approfondire quest’ultima parte (che non tratterò) eccovi una buona guida (delle tante che potete trovare) collegamenti ssh tramite chiave pubblica.
Nel caso non vi interessi la sincronizzazione con una macchina remota o avete scelto ssh con la chiave pubblica, saltate direttamente a Installare cRsync.
Installare demone rsync (server di backup)
Rsync è già installato nella maggior parte le distribuzioni, se così non fosse (su Ubuntu):
sudo apt-get install rsync
Adesso dobbiamo andare a modificare il files di configurazione /etc/rsyncd.conf o crearlo se non esistesse.
Ecco un file d’esempio…partendo dall’inizio incontriamo i file necessari a rsync:
# necessario per supportare il paramentro max connections lock file = /var/run/rsync.lock # per verificare se il demone è in esecuzione pid file = /var/run/rsyncd.pid # il log di rsyncd log file = /var/log/rsyncd.log # il messaggio di benvenuto quando ci collegheremo al server rsync motd file = /etc/rsyncd.motd
Continuando troviamo i vari progetti ed i relativi parametri:
[nome_del_progetto] path = /cartella/dove/sincronizzare comment = commento del progetto # utente e gruppo con il quale il demone leggerà e scriverà i file (il demone dovrà essere eseguito come root) uid = root gid = root # possibilità di leggere soltanto read only = false # il progetto può essere visualizzato tra i servizi offerti dal server list = yes # host/ip che posso accedere al progetto hosts allow = pc1.mydomain.it, pc2.mydomain.it # utente NON di sistema che può accedere al servizio rsync auth users = rsync # file contente gli utenti e le password secrets file = /etc/rsyncd.scrt [nome_del_secondo_progetto] ...
Per altri parametri e maggiori dettagli sul files /etc/rsyncd.conf consiglio un bel
man rsyncd.conf
Testare il demone rsync
Avviamo il nostro demone sul server:
sudo service rsync start
Adesso sul nostro client eseguiamo:
rsync host_serverbackup::Dovremmo vedere la lista dei progetti che abbiamo appena configurato in rsyncd.conf, ovviamente se impostato il tag ‘list = yes‘.
rsync <parametri> /path/sorgente user@host_serverbackup::nome_del_progettoL’uso dei :: (due punti) indica ad rsync che ci stiamo collegando ad un suo demone.
Installare cRsync (client)
- Decomprimente il file scaricato (lo trovate in fondo a questa pagina):
tar -xvzf cRsync.tar.gz - Copiate i files "parseconfig.sh" e "crsync" in una delle cartelle PATH di sistema a vostra scelta. Solitamente /usr/local/bin.
echo $PATH # per vedere quali sono le cartelle sul vostro sistema - Impostate i permessi di entrambi i file a -rwxr-xr-x con:
chmod 755 <nome_file>
L'installazione base è completa, ma ci sono alcune migliorie e note importanti:
Autocompletamento: Per abilitare l'autocompletamento (tab da riga di comando) dei nomi dei moduli, dovete copiare il file etc/bash_completion.d/crsync (presente nell tar.gz) appunto in etc/bash_completion.d/
File di configurazione: Il file di configurazione di cRsync va creato in /etc e andrà chiamato crsync.conf, a meno di utilizzare il paramentro '-c' all'avvio di crsync.
Potete usare come base quello d'esempio etc/crsync.conf presente nello tar.gz.
Password nel file di configurazione: Nel caso inseriate la password di rsync (RSYNC_PASSWORD) nel file di configurazione, dovreste cambiare i permessi e il possessore del file crsync.conf, per renderlo sicuro (-r--------). In questo modo però non funzionerà più l'autocompletamento (correggerò il problema nella prossima release).
Sudo e RSYNC_PASSWORD: Se utilizzate il campo RSYNC_PASSWORD in crsync.conf e volete avviare crsync come sudo è necessario fare la seguente modifica al file /etc/sudoers:
# needed for auto-login with rsync running under sudo Defaults env_keep+="RSYNC_PASSWORD"
L'installazione è decisamente un po' lunga, ma si può risolvere il tutto con una semplice pacchettizazione (.deb)...magari in futuro!
Configurare cRsync (client)
Come già scritto, cRsync prevede il file di configurazione /etc/crsync.conf, ma utlizzando il parametro '-c' potete indicarne un altro.
Il file andrà strutturato in moduli, ovvero i nostri progetti. Ecco un esempio, presente anche nell'archivio (etc/crsync.conf):
# backup etc (/etc/) on myServerBackup
nameModule1 {
INFO="backup etc (/etc/) on myServerBackup"
SRC="/etc"
DEST="rsync_user@myServerBackup::rsync_project_etc"
RSYNC_PASSWORD="my_password" # if don't set it will ask on execution
GAPDAYS=6 # last rsync must be 6 days old
CHECK_RSYNC_SERVER="myServerBackup" # check if is there a rsync server online"
RSYNC_PARAMS="-a --copy-links --delete-during --delete-excluded"
}
# backup my Pictures (/home/myname/Pictures/) on myServerBackup
nameModule2 {
INFO="backup my Pictures (/home/myname/Pictures/) on myServerBackup"
SRC="/home/myname/Pictures/"
DEST="rsync_user@myServerBackup::rsync_project_pictures"
GAPDAYS=3 # last rsync must be 3 days old
CHECK_RSYNC_SERVER="myServerBackup" # check if is there a rsync server online
RSYNC_PARAMS="-a --update --links --delete-during --delete-excluded --ignore-errors \
--exclude compleanno/ \
--exclude matrimoni/*/marco/"
}
Il file presenta due moduli (nameModule1, nameModule2) e all'interno delle graffe ogni modulo viene caratterizzato con i seguenti tag:
| INFO | Semplicemente una stringa descrittiva del modulo. Servirà esclusivamente a noi per ricordare il comportamento del modulo. |
| SRC | Campo sorgente, ovvero quale sarà la cartella da sincronizzare. Qui potremmo anche trovare la stringa user@host_serverbackup::nome_del_progetto, dove nome_del_progetto è il nome indicato nel file /etc/rsyncd.conf. |
| DEST | Campo destinazione, stesse considerazioni del SRC. |
| RSYNC_PASSWORD | La password che abbiamo impostato nel file /etc/rsyncd.scrt per accedere al progetto configurato sul demone rsync. Nel caso non venga indicata la password e questa è necessaria, verrà richiesta a video. |
| GAPDAYS | Il numero minimo di giorni che dovrà trascorrere prima di RIeseguire la sincronizzazione. |
| CHECK_RSYNC_SERVER | Verifica che l'host indicato sia raggiungibile, altrimenti non avvia la sincronizzazione. |
| RSYNC_PARAMS | I parametri che indichereste richiamando semplicemente il comando rsync. |
I tags RSYNC_PARAMS, CHECK_RSYNC_SERVER, GAPDAYS e RSYNC_PASSWORD non sono obbligatori.
Usare cRsync (client)
Non ci rimane che usare cRsync da riga di comando.
Allora se tutto è andato bene possiamo scrivere nella nostra command line:
crsync <nome_modulo>Se abbiamo correttamente installato anche l'autocompletamento, basterà dare due tab per visualizzare i moduli configurati. Al termine dell'esecuzione ci verrà mostrato l'esito della sincronizzazione.
I parametri di cRsync sono semplici:
| -h | Indovinate un po?!? :) |
| -l | Visualizza la lista dei moduli presenti in /etc/crsync.conf o nel file passato con '-c'. |
| -i | Stampa a video tutte le informazioni sul modulo indicato. |
| -p | Consente di passare ulteriori parametri al comando rsync, non previsti nel tag RSYNC_PARAMS. Utilizzare gli " (apici) per racchiudere i parametri da passare. Es. -p "-v" per eseguire rsync in modalità verbose. |
| -c | Indica un file di configurazione alternativo. |
| -f | Forza cRsync ad effettuare la sincronizzazione anche se GAPDAYS non è rispettato. |
| -a | Nel caso in cui GAPDAYS non è rispettato chiedi l'intervento dell'utente per decidere se effettuare l'operazione. |
| -v | Avvia cRsync in modalità verbose. |
Bene, a questo punto dovreste poter andare avanti anche da soli.
Come sempre feedback e suggerimenti sono graditissimi!
| ![]() |

No Comment.
Add Your Comment