Còpies remotes amb Rsync

De Guifi.net - Wiki Català

Consulteu també l'article Rsync.

Scripts per sincronitzar dos ordinadors

Rsync per fer backups cap problema. Però per sincronitzar fitxers en 2 ordenadors qualsevol programa no ho pot fer perfecte, pq si en l'ordenador A hi ha el fitxer hola.txt i en l'ordenador B no hi és, pot ser que:

  • El fitxer no estava enlloc i s'ha creat en l'ordenador A: llavors caldria copiar-lo a B.
  • El fitxer estava als dos ordenadors i s'ha eliminat de l'ordenador B: llavors caldria eliminar-lo a A.

Però no està tot per perdut. La solució que he trobat, i que em funciona molt bé, és fer 2 scripts separats en el ordenador 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:

  1. baixar els fitxers de A a B (script FesVenirFitxers)
  2. Treballar amb l'ordenador B
  3. pujar-los de B a A (script FesMarxarFitxers)

Els scripts per l'usuari usuari que només estan a l'ordenador 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 pq així els fitxers modificats ambdós costats es sincronitzen correctament (guanya el fitxer més actual). No em fa por pq els 2 portàtils sincronitzen la data+hora per internet a l'arrancar.

L'script FesVenirFitxers te l'opció --delete pq ordenador 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 fitxer eliminats a B no s'elimin 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.

Copies incrementals amb rsync

Podem utilitzar rsync per fer copies incrementals sense malgastar espai en disk 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 copies incrementals del últims 3 dies.

Teniu en compte la opció ---link-dest. Per més informació sobre HardLinks es pot consultar l'apartat corresponent de l'entrada Shells

  • [Easy Automated Snapshot-Style Backups with Linux and Rsync]
Eines de l'usuari