You are on page 1of 2

LINUX USER • Línea de comandos: Rsync

Sincronización de Ficheros con Rsync

SINCRONÍZATE
Rsync permite sincronizar datos tanto en un ordenador local como remoto. Incluso puede ser usado con

SSH para la encriptación de datos. POR HEIKE JURZIK

Sincronicity

R
sync permite mantener los datos $ rsync -n dirl/* dir2/
actualizados y ayuda a controlar Rsync compara los datos en dos máquinas. La skipping directory dirl/dirl
los confusos cambios que se pro- sintaxis genérica para esto es rsync [opciones] skipping directory dir1/dir2
ducen en las nuevas versiones de cada fuente objetivo. La elección de la fuente y el skipping non-regular fileU
fichero. La herramienta de sincronización objetivo es crítica. Es preciso decidir cuidado- “ficherol.tex”
Rsync ofrece opciones que ayudan a samente la dirección donde se va a realizar la kap01.tex
administrar las propiedades de ficheros, sincronización para evitar la pérdida de datos. kap02.tex
funciona bien con SSH y es perfecto para El cuadro “Datos Unison” presenta una alter- kap03.tex
la transferencia rápida de grandes volú- nativa a esta salida de un solo sentido basada ...
menes de datos si el ordenador objetivo en la herramienta Unison, la cual permite sin-
ya posee una copia de una versión previa. cronizar en ambas direcciones. Tal y como muestra la salida, Rsync transferirá
Rsync comprueba las diferencias entre la Rsync ofrece un apoyo importante para la ficheros y directorios pero omitirá los enlaces
fuente y las versiones objetivo de los monitorización de la transferencia de datos: si simbólicos. La herramienta hace referencia a
datos y transfiere solamente aquéllos que se invoca a Rsync con la etiqueta -n el pro- estos últimos como ficheros no-estándar (non-
hayan cambiado. grama presentará una ejecución de prueba: regular). Para transferir subdirectorios

Datos Unison
Unison [1] es otra importante herra- Para aceptar esta sugerencia se pulsa changes at 20:20:34 U
mienta de sincronización, que no sólo la tecla [F]. Si se presenta un conflicto on 28 Feb 2006
sincroniza en ambas direcciones, sino que Unison no puede resolver porque,
[BGN] Copying ficherol.tex
que también soporta sistemas operati- digamos, las dos versiones del fichero
vos no Linux. Este programa se han cambiado desde la última vez que from /home/huhnix/dir1
encuentra disponible para Linux, Win- se ejecutó el programa, Unison pre- to /home/huhnix/dir2
dows, Mac OS X y Irix, tal y como puede senta un signo de interrogación <-?->
...
comprobarse si se echa un vistazo al invitando a tomar una decisión. Se
área de descarga de su sitio web. puede escribir < ó > o pulsar [Shift-7] (/) Saving synchronizer state
Unison puede ejecutarse desde la línea para posponer la decisión hasta otro Synchronization complete
de comandos o desde su GUI. Para sin- momento, o pulsar [Shift-I] para pospo-
Igual de simple es la sincronización con
cronizar dos directorios en la máquina nerla para siempre.
máquinas remotas. Primero hay que
local se escribe: unison -ui text carpeta1 Para ver los comandos disponibles asegurarse de que la versión Unison ins-
carpeta2, por ejemplo. puede escribirse un signo de interroga- talada es la misma en ambas máquinas
Si difiere el contenido de las dos carpe- ción (?). Al final, el programa y luego se escribe unison -ui text car-
tas, Unison dará a conocer la dirección comprueba una vez más si realmente peta1 ssh://usuario@maquinaobjetivo/
de sincronización y decirnos si el fichero se desean aplicar los cambios: pul- carpeta.
es nuevo o ha sido modificado. sando [Y], se arranca la operación de
Como puede observarse, la sintaxis es
sincronización.
carpeta1 carpeta2 un poco distinta a la de Rsync. En lugar
Proceed withU de los dos puntos se tiene una barra.
new file ——> kap01.
propagating updates? [] y Para usar una ruta absoluta, es preciso
tex [f] añadir otra barra: unison -ui text car-
Propagating updates
<—— changed kap02. peta1 ssh://usuario@maquinaobjetivo/
UNISON started propagating U carpeta.
tex [f]

84 Número 20 WWW.LINUX- MAGAZINE.ES


Línea de Comandos: Rsync • LINUX USER

recursivamente hasta el nivel más bajo, habrá Exclusiones


que especificar la opción -r. Adicionalmente, si
se añade la etiqueta -l recoge los enlaces Rsync dispone de una prác-
simbólicos. Evidentemente es posible una tica opción que permite
combinación de estas opciones. excluir determinados ficheros
del proceso de sincroniza-
rsync -rl dirl/* dir2/ ción. Para utilizarlo, se
building file list ... done especifica la opción —
ficherol.tex ->U exclude= y una pauta de
ficherol_nuevo.tex búsqueda y se definen los
kap01.tex ficheros a excluir. Esta opción
... permite el uso de comodines:
rsync -a —exclude=*bak ~/
Rsync dispone de una manera alternativa de article/*backup/.
La barra es importante: ¿Copiará Rsync los contenidos o el
manejar enlaces simbólicos: si se sustituye -l Esto excluye ficheros que fichero en sí?
por -L, el programa resolverá el enlace, y los acaban en .bak. Si se desean
enlaces simbólicos acaban como ficheros nor- excluir ficheros acabados en tilde se añade en la que se dejó. Especificando la opción —
males en el directorio objetivo. otro —exclude: rsync -a —exclude=*bak — progress se obtiene un indicador de progreso
exclude=*~ fuente objetivo. que permite seguirle la pista de la operación
Barra Libre Puede ahorrarse tiempo almacenando las de transferencia.
Al añadir una barra al nombre del directorio se exclusiones en un fichero de texto. Se requiere
modifica el modo en el que Rsync desarrolla una línea de separación para cada modelo de $ rsync —progress —partialU
una operación. Por ejemplo, si se da al búsqueda. Hay que especificar el parámetro debian.iso transpluto:U
comando rsync -a fuente/carpeta objetivo, —exclude-from=FicherodeExclusion para ana- /scratch/debian/
Rsync transferirá el directorio carpeta y su lizar el fichero. Password:
contenido al directorio objetivo. debian.iso
Si se añade una barra al directorio objetivo, Cooperación 22543992 3% 5.15MB/s
rsync se limitará a transferir el contenido de Rsync incluso puede sincronizar datos a tra- 0:02:14
carpeta al objetivo, metiéndolos directamente vés de una red. Se pasa el parámetro -e ssh
en el directorio objetivo (Figura 1). para encriptar y transferir ficheros usando Al otro lado de la conexión, el fichero par-
SSH. Es preciso cambiar la fuente y el objetivo cial se mantiene oculto en el directorio
Volver a Empezar con el nombre o dirección IP de las máquinas objetivo. Si se escribe ls -a, se puede ver un
Si se usa Rsync para crear copias de seguri- local y remota. Si el nombre de la cuenta de la fichero con un nombre como
dad, tiene sentido mantener los atributos de máquina remota es distinta, hay que añadir el .debian.iso.wtKNr7. El punto al comienzo
los ficheros originales. Los atributos inclu- nombre de usuario remoto seguido de un del nombre del fichero mantiene al fichero
yen permisos de lectura, escritura y signo arroba (@), de la siguiente manera: oculto y la extensión arbitraria minimiza el
ejecución junto con marcas temporales, es rsync -e sshb fuente peligro de sobreescritura de los ficheros
decir, información de la última hora y fecha usuario@hostobjetivo:objetivo/. existentes.
de acceso (atime), del último cambio de Se escribe una ruta relativa al propio direc- Cuando se completa la transferencia, el
estado (ctime) y la última modificación torio de inicio o bien una ruta absoluta fichero recobra su nombre original. Si se
(mtime). después de los dos puntos. Una variable de interrumpe puede ser restablecida especifi-
Además, los administradores pueden entorno evita tener que introducir los paráme- cando nuevamente la opción —partial.
aprovechar los parámetros que preservan los tros para la encriptación SSH cada vez que se La opción —partial tiene una desventaja.
datos del propietario y del grupo y soportar ejecuta el comando. Para Bash el comando es: Si se usa Rsync para actualizar un fichero
ficheros de dispositivo. Para mantener los RSYNC_RSH=ssh. existente y se interrumpe la transferencia,
permisos se especifica la opción -p, -t se Debido a que la variable solamente es desaparece el fichero original de la máquina
encarga de las marcas temporales y -g man- válida dentro del contexto de la shell actual objetivo y es sustituido por el fichero parcial
tiene intacto el atributo del grupo. hay que añadir la línea de exportar el fichero que se ha transferido. Este problema puede
Si bien cualquier usuario normal puede de configuración de tu Bash, ~/.bashrc, asig- solucionarse creando un enlace duro al
especificar los parámetros mencionados, las nar la variable permanentemente y luego fichero original primero: ln debian.iso
opciones -o (guarda los datos propietarios) y ejecutar source ~/.bashrc para reanalizar el debian_orig.iso. Si la transferencia falla, no
-D (atributos de dispositivo) sólo se encuen- fichero. se perderá la imagen ISO. En vez de ello,
tran disponibles para el superusuario. La aparecerá un nuevo nombre al fichero par-
línea de comandos completa con todas estas Amontonar Datos cial, pero sin destruir el original. ■
opciones sería algo como rsync -rlptgoD Rsync es perfecto para la transferencia de
home/huhn/*backup/. Pero existe un atajo: grandes volúmenes de datos. Si se especifica RECURSOS
Rsync dispone de una opción especial que el parámetro —partial y se interrumpe la
[1] Página de inicio de Unison: http://
combina estos parámetros para este caso. En transferencia por alguna razón, puede
www.cis.upenn.edu/~bcpierce/unison/
vez de -rlptgoD se escribe -a. tomarse dicha transferencia a partir del punto

WWW.LINUX- MAGAZINE.ES Número 20 85

You might also like