kokopelli

GUIDA - Rsync: Sincronizzazione Remota in Automatico

Recommended Posts

direttamente da Wikipedia:

RSYNC è un software per Unix, quindi presente in tutti i nostri MAC, che sincronizza file e cartelle da una posizione all'altra minimizzando il trasferimento di dati utilizzando quando possibile la codifica delta.

Un'importante caratteristica di rsync che non trova riscontri in programmi/protocolli simili è che il mirroring avviene attraverso una sola trasmissione di dati per ogni direzione di comunicazione.

Rsync può copiare o visualizzare il contenuto delle directory e copiare i file, utilizzando opzionalmente la compressione dei dati e la ricorsione. Per default, rsync effettua la copia attraverso una connessione TCP sulla porta 873.

Rsync non possiede una propria interfaccia grafica, ma solo quella testuale. Esiste tuttavia il programma Grsync, rilasciato sotto licenza GPL, che implementa una interfaccia grafica per rsync.

Una volta lette queste ultime righe, infatti, ho pensato che fosse l'app che faceva per me... mio scopo, infatti, era quello di sincronizzare, senza perdermi in righe e righe di comandi, delle cartelle locali su di una remota posta nel NAS (nel mio caso un Qnap TS-112) utilizzando la sua feature Rsync.

Niente di più facile, ci si connette al NAS, si lancia Grsync, si scelgono le cartelle, si clikka sul tasto [Execute] e il gioco è fatto, ma... niente automatismi e decisamente limitante quando, come nel mio caso, si avrebbe la possibilità di sfruttare il server Rsync presente nel Qnap e non lo si fa.

Non resta, a questo punto, l'utilizzo "vero" di Rsync... quello tramite la riga di comando.

Avendo a che fare con un server Rsync in cui risiede la nostra cartella remota che dovrà ospitare i dati locali, eccoci a dover impostare uno username e una password per accedervi.

Fino a quando ci si muove all'interno della shell bastano questi due comandi:

rsync --recursive --delete --perms --verbose /Users/utente/cartella_locale \

rsync://[email protected]/cartella_remota

in cui:

  • /Users/utente/cartella_locale è il path della cartella locale
  • 11.22.33.44/cartella_remota è il path della cartella remota
  • PIPPO è lo username per accedere al server

E la sincronizzazione avviene un attimo dopo aver inserito la password.

Si, ma è, in un certo qual modo, come utilizzare Grsync.

Per automatizzare il tutto, però, ho dovuto ravanare in lungo e in largo la rete e, come in un puzzle, trovare gli incastri... ops! i comandi giusti.

Di seguito, quindi, la mia soluzione chiedendo a chi ne sa, di apportare le modifiche del caso qualora la procedura che esporrò si possa semplificare e migliorare (me lo auguro)

Segnatevi su un foglio i seguenti parametri :

  • l’indirizzo ip del vostro NAS/Server Rsync (es. 11.22.33.44)
  • il nome utente autorizzato all’accesso (es.PIPPO)
  • la password di accesso per l’utente al punto precedente (es. 12345678)
  • il path della cartella locale da copiare (es. /Users/utente/cartella_locale)
  • il path della cartella remota sul NAS in cui copieremo/syncronizzeremo la cartella del punto precedente (es.11.22.33.44/cartella_remota)
  • il path della cartella locale in cui verrano inseriti i log di syncronizzazione (es./Users/utente/log_backup)

NB: tutte le cartelle di cui sopra NON devono contenere spazi

Praticamente avete quasi finito, aprite "Automator", create una Applicazione e trascinate "Esegui Script Shell".

Cancellate ciò che è presente ed incollate:

#!/bin/bash

RSYNC_PASSWORD=12345678

export RSYNC_PASSWORD

rsync --recursive --delete --perms --log-file=/Users/utente/log_backup/$(date +%Y%m%d)_rsync.log --verbose /Users/utente/cartella_locale \

rsync://[email protected]/cartella_remota

Quanto incollato, praticamente, sincronizza il contenuto di una cartella e delle sue sotto cartelle (le sotto cartelle possono contenere degli spazi) in una remota, mantenendo i permessi di origine e salvando il lavoro in un log.

Salvate, inserite l'app in Elementi Login o dove volete voi e... buona sincronizzazione a tutti.

See you...

PS: per i possessori di Qnap: nel NAS abilitare in "Amministrazione" --> "Server Applicazioni" il "Server di Backup" Rsync inserendo un "Nome Utente (es.PIPPO)" e una "Password (es.12345678)". Per comodità, la porta tcp/ip di default su cui il demone Rsync è in ascolto, la 873, l'ho lasciata invariata

Share this post


Link to post
Share on other sites

Io pensavo tu avessi trovato un modo che non richieda l'introduzione della password in chiaro.

A questo punto, non puoi fare anche

#!/bin/bashRSYNC_PASSWORD=12345678 rsync --recursive --delete --perms --log-file=/Users/utente/log_backup/$(date +%Y%m%d)_rsync.log --verbose /Users/utente/cartella_locale \rsync://[email protected]/cartella_remota

oppure

#!/bin/bashrsync --recursive --delete --perms --log-file=/Users/utente/log_backup/$(date +%Y%m%d)_rsync.log --verbose --password-file=_file_con_pass_dentro /Users/utente/cartella_locale rsync://[email protected]/cartella_remota

Non ho provato ma potrebbero andare entrambi. Nel secondo caso puoi dare i permessi di lettura al file con la password solo al tuo utente, così nessuno può leggerne il contenuto.

Share this post


Link to post
Share on other sites

Il problema della pw in chiaro non me lo sono proprio posto visto che è già stato complicato così.

Il primo metodo che proponi, imho, dovrebbe andare... il secondo, invece, lo avevo provato, ma mi aveva dato buca... probabilmente un errore di sintassi, ma mi sembra uguale a quanto avevo testato.

Imho, ai comandi di cui sopra, non sarebbe mare aggiungere un --excluse='.*' affinchè i file e le cartelle nascoste non vengano copiate.

See you...

Share this post


Link to post
Share on other sites

Ho un NAS QNAP TS219P II in rete che uso come fileserver.

Vorrei effettuare backup dei files dal NAS ad un HD esterno, collegato ad un Mac in rete ethernet.

Il NAS QNAP è basato su Linux, ed è equipaggiato di serie con un server rync a questo scopo.

Nel setup del QNAP, quando specifico il target (HD esterno sotto Mac OSX), mi viene chiesta la porta attiva, oltre all'indirizzo IP.

Di default QNAP indica la porta 873, ma non funziona.

Il problema può essere che la porta sia diversa oppure che il server rsync sia da "attivare" ?

Chi mi può dare lumi?

Share this post


Link to post
Share on other sites

@Taragno


Hai risolto poi il problema della sincronizzazione? Se si, come?


 


Ho lo stesso problema, cioè sincronizzare una cartella locale sul NAS Remoto (nel mio caso un QNap TS-212).


Ho provato ad usare QSync per qualche settimana (un lungo periodo!) però non è funzionale perché è lentissimo, almeno nel mio caso (ho una cartella di quasi 5GB con centinaia e centinaia di files che andrebbero sincronizzati su 3 computer diversi!!).


 


In attesa di buone notizie porgo un cordiale saluto a tutti voi.



Mauro ju Macniaco


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now