Diferencia entre revisiones de «Rsync»
Línea 149: | Línea 149: | ||
== rsync sobre [[SSH]] == | == rsync sobre [[SSH]] == | ||
Encara que rsync té el seu propi protocol de transferència. Pot ser recomanable utilitzar [[SSH]]. La manera és fer ''-e ssh''. Rsync pot utilitzar el client SSH directament i podem utilitzar la mateixa sintaxi que amb el scp: | |||
$ rsync -a -e ssh source/ username@remotemachine.com:/path/to/destination/ | |||
^ ^ ^ ^ | |||
Directori origen Usuari @ URL o IP destí : Directori destí | |||
== Opcions == | == Opcions == |
Revisión del 10:30 20 may 2013
Rsync és una aplicació informàtica i un protocol de comunicació per sistemes estil Unix i Windows que sincronitza fitxers i directoris des de una ubicació cap a una altra minimitzant la transferència de dades. Rsync també permet fer còpia de fitxers i directoris fent servir compressió o recursivitat.
rsync -aP --delete [Carpeta orige] [Carpeta destí] # Exemple de rsync per a fer cópies de seguretat incrementals
Mentre que l'algorisme rsync forma part del nucli de l'aplicació rsync i essencialment optimitza les transferències entre dues computadores sobre TCP/IP, l'aplicació rsync proveeix altres funcions que assisteixen en la transferència. Aquestes inclouen compressió i descompressió de les dades bloc per bloc, utilitzant zlib a enviar i rebre, i suport per a protocols de xifrat, tal com SSH, el que permet transmissió xifrada i eficientment diferenciada de dades comprimits utilitzant l'algorisme rsync.
Addicionalment pot utilitzar-se una aplicació de tunneling també per crear un túnel xifrat que asseguri les dades transmeses.
A més d'arxius, l'algorisme permet copiar directoris, tot recursivament, així com vincles, dispositius, grups i permisos. No requereix per defecte privilegis de root per al seu ús.
rsync va ser escrit com un reemplaçament de rcp i SCP. Una de les primeres aplicacions de rsync va ser el emmirallat (mirroring) o respatller de múltiples clients Unix dintre d'un servidor Unix central, utilitzant rsync / ssh i comptes estàndards d'Unix. Habitualment s'executa mitjançant eines de scheduling com cron, per automatitzar processos de sincronització entre múltiples ordinadors host i servidors centrals.
Copies de seguretat amb rsync
Una de les maneres més potents i bàsiques de fer copies de seguretat és rsync. Per exemple, imagina que tens un directori anomenat source/ i un altre destination/
rsync -a source/ destination/
Aquest comandament és equivalent a:
cp -a source/. destination/
En la diferència de que és molt més eficient.
Si el destí està en una màquina remota:
rsync -a -e ssh source/ username@remotemachine.com:/path/to/destination/
Es pot fer la transmissió per SSH
--delete
Les copies de seguretat poden ser absolutes o incrementals. Si són absolutes dona igual que s'utilitze cp que rsync. En el cas de les incrementals, el rsync sols envía les novetats de l'orige. D'aquesta manera la transmissió és molt més eficient.
Però hi ha un problema, si sols enviem els fitxers nous, els fitxers borrats no s'esborren del destí. Amb l'opció --delete, el destí serà exactament igual a l'orige.
$ rsync -a --delete source/ destination/
Cal utilitzar aquesta opció amb molta cura, ja que, si es fà la copia de seguretat després de borrar un fitxer important, es perdrà en els dos costats.
Es pot utilitzar cron:
$ crontab -e
Afegint:
20 4 * * * rsync -a --delete source/ destination/
Copies de seguretat incrementals
Observa aquest script:
rm -rf backup.3 mv backup.2 backup.3 mv backup.1 backup.2 cp -al backup.0 backup.1 rsync -a --delete source_directory/ backup.0/
Manté 4 copies de seguretat. La 1,2 i 3 són versions antigues de les copies de seguretat. La 0 es copia totalment a la 1 cada vegada. Però la 0 és actualitzada de manera incremental amb l'opció --delete. Si la copia 0 queda mal a causa del --delete, encara queda la 1,2 i 3 per poder recuperar coses perdudes.
Servidor rsync
Teniu un exemple a la documentació:
/usr/share/doc/rsync/examples/rsyncd.conf
Primer cal però canviar el fitxer:
/etc/default/rsync
Només cal activar el servidor posant:
RSYNC_ENABLE=true
Però encara falta configurar-lo abans de poder-lo executar:
$ sudo /etc/init.d/rsync restart * Restarting rsync daemon rsync * rsync daemon not running, attempting to start. * missing or empty config file /etc/rsyncd.conf
Podeu copiar l'exemple:
$ sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
Ara cal dir que és el que compartim:
# sample rsyncd.conf configuration file # GLOBAL OPTIONS #motd file=/etc/motd #log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= # MODULE OPTIONS [ubuntu] comment = Ubuntu Mirror path = /media/disk2/UbuntuMirror use chroot = yes # max connections=10 lock file = /var/lock/rsyncd # the default for read only is yes... read only = yes list = yes uid = sergi gid = sergi # exclude = # exclude from = # include = # include from = # auth users = # secrets file = /etc/rsyncd.secrets strict modes = yes # hosts allow = # hosts deny = ignore errors = no ignore nonreadable = yes transfer logging = no # log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
El que està entre claudàtors és anomenat a anomenat mòdul (module) en la terminologia rsync i és el que s'indicar a la URL d'accés. Si no configurem el mòdul tindrem el següent error:
> rsync -a --progress --stats rsync://192.168.7.182/ubuntu . @ERROR: Unknown module 'ubuntu'
Podeu comprovar que el port està obert amb:
$ sudo nmap -p 873 localhost Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-01 13:12 CET Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 873/tcp open rsync
rsync sobre SSH
Encara que rsync té el seu propi protocol de transferència. Pot ser recomanable utilitzar SSH. La manera és fer -e ssh. Rsync pot utilitzar el client SSH directament i podem utilitzar la mateixa sintaxi que amb el scp:
$ rsync -a -e ssh source/ username@remotemachine.com:/path/to/destination/ ^ ^ ^ ^ Directori origen Usuari @ URL o IP destí : Directori destí
Opcions
Enllaços
http://rsync.samba.org/examples.html
http://es.wikipedia.org/wiki/Rsync