Rsync
De Guifi.net - Wiki Català
25px
Aquesta wiki forma part dels materials d'un curs
| |
---|---|
Curs: | DissenyXarxesLinux, LinuxAdministracioAvancada |
Fitxers: | GestioRemota.pdf |
Repositori SVN: | http://anonymous@svn.projectes.lafarga.cat/svn/iceupc/LinuxAdministracioAvan%c3%a7ada |
Usuari: | anonymous |
Paraula de pas: | sense paraula de pas |
Autors: | Sergi Tur Badenas |
Rsync és una millora de la comanda scp, amb més opcions, més flexibilitat i més rapidesa. La principal millora respecte a scp és que rsync permet copiar fitxers de forma incremental, copiant només les diferències. Altres avantatges són la capacitat de comprimir la informació abans d'enviar-la per la xarxa. Veiem un exemple:
rsync -e ssh -cavz fitxer_origen usuari_desti@maquina_desti:path_desti
Contingut
Scripts per sincronitzar dos ordinadors
Rsync per fer còpies de seguretat unidireccionals cap problema. Però per sincronitzar fitxers en les dos direccions entre 2 ordinadors és una mica més complicat, perquè si en l'ordinador A hi ha el fitxer hola.txt i en l'ordinador B no hi és, pot ser que:
- El fitxer no estava enlloc i s'ha creat en l'ordinador A: llavors caldria copiar-lo a B.
- El fitxer estava als dos ordinadors i s'ha eliminat de l'ordinador B: llavors caldria eliminar-lo a A.
Una possible solució és utilitzar 2 scripts separats a l'ordinador secundari B. Un per fer baixar els fitxers de A a B i un altre per pujar-los de B a A. És qüestió de ser ordenat:
- baixar els fitxers de A a B (script FesVenirFitxers)
- Treballar amb l'ordinador B
- pujar-los de B a A (script FesMarxarFitxers)
Els scripts per l'usuari usuari que només estan a l'ordinador B són els següents:
$ more /home/usuari/Desktop/FesVenirFitxers #! /bin/sh rsync -e ssh -avuz --delete --exclude '.*' --exclude 'Fes*Fitxers' c@192.168.0.10:/home/usuari /home
$ more /home/usuari/Desktop/FesMarxarFitxers #! /bin/sh rsync -e ssh -avuz --exclude '.*' --exclude 'Fes*Fitxers' /home/usuari usuari@192.168.0.10:/home
Faig sincronització per dates perquè així els fitxers modificats ambdós costats es sincronitzen correctament (guanya el fitxer més actual). No em fa por perquè els 2 portàtils sincronitzen la data+hora per internet a l'arrancar.
L'script FesVenirFitxers té l'opció --delete perquè ordinador secundari B sigui un còpia fidel a A.
Però l'script FesMarxarFitxers no té l'opció --delete per no provocar desgràcies involuntàriament (si executes FesMarxarFitxers sense primer haver executat FesVenirFitxers). Això té com a conseqüència que els fitxers eliminats a B no s'eliminin a A, però no es greu si la feina grossa es fa a A (crear/modificar/eliminar fitxers) i a B només crear/modificar fitxers.
Còpies incrementals amb rsync
Podem utilitzar rsync per fer còpies incrementals sense malgastar espai en disc de la següent manera:
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/
o
rm -rf backup.3 mv backup.2 backup.3 mv backup.1 backup.2 mv backup.3 backup.tmp mv backup.0 backup.1 rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
Si aquest script s'executa diàriament (per exemple amb crontab) tindrem còpies incrementals del últims 3 dies.
Teniu en compte l'opció ---link-dest. Per més informació sobre HardLinks es pot consultar l'apartat corresponent de l'entrada Shells
Còpies remotes amb Rsync
Vegeu l'article Còpies remotes amb Rsync.
Exclude
Atenció amb els excludes i els patchs absoluts. El següent no funciona:
rsync -a /var/lib/* --exclude="/var/lib/moodle" /tftpboot/node_root/var/lib/
en canvi:
rsync -a /var/lib/* --exclude="moodle/" /tftpboot/node_root/var/lib/
Si que exclou correctament la carpeta moodle.
Filtres
El següent exemple exclou totes els moodle.mediawiki o mysql ja siguin fitxers o carpetes
rsync -a /var/lib/* --exclude=moodle --exclude=mediawiki --exclude=mysql /tftpboot/node_root/var/lib/
Per a indicar només carpetes cal fer:
rsync -a /var/lib/* --exclude=moodle/ --exclude=mediawiki/ --exclude=mysql/ /tftpboot/node_root/var/lib/
Exemples
Copiar només carpetes
Es pot fer combinant includes i excludes de la següent manera:
$ sudo rsync -a -u --include=*/ --exclude=* /var /tftpboot/node_root
Limitar l'ample de banda
Podem utilitzar el paràmetre bwlimit
$ rsync -e ssh -cavvvz --progress --bwlimit=10 FOTOS usuari@elmeudomini.org:/linux2
L'exemple limita la velocitat a 10 KBPS.
rsync en un port SSH diferent
Si voleu utilitzar un port de SSH diferent al estàndard:
$ rsync --progress -vrae 'ssh -p 8022' fitxer_origen fitxer_destinacio
Clonar disc
Instal·lar un servidor rsync
Teniu un exemple a la documentació:
/usr/share/doc/rsync/examples/rsyncd.conf
NOTA: A Debian el fitxer és /usr/share/doc/rsync/sample-rsyncd.conf.gz
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
Troubleshooting. Resolució de problemes
chgrp failed: Operation not permitted a FAT 32
Sies esteu fent una còpia de seguretat amb rsync sobre un dispositiu FAT32 i obteniu errors similars a:
rsync: chgrp "/media/disk/Torrents/tor0/cache/Ep 6 - 11am - 12pm.avi" failed: Operation not permitted (1)
És per què rsync no suporta operacions de grup. Podeu utilitzar el paràmetre --no-group.
# rsync -avv --no-group --modify-window=1 --progress /linux2/linux2/FOTOS /media/disk
Vegeu també
Recursos
- Pàgina principal de rsync
- Rsync al forge de Novell
- Tutorial: Using Rsync
- Tutorial: Mirroring amb rsync
- Tutorial: Backing up files with rsync
- Algorisme de RSync
- Unison, una eina per sincronitzar bidireccionalment
- Rsync a Windows amb Cygwin
- Tutorial 1 amb captures de pantalla per configurar Rsync a Windows
- Tutorial amb captures de pantalla per configurar Rsync a Linux/Unix/BSD
- Tutorial amb captures de pantalla per configurar Rsync a Mac OS X
- NasBackup. Rsync Windows GUI
- rsync.net