domingo, 8 de noviembre de 2009

Sincronizando datos: rsync (4) y un toque de SSH

Hablamos de crear unos scripts para automatizar el proceso de sincronización con el servidor. Nada más sencillo que abrir un editor de texto y escribir:

#!/bin/bash
rsync -axzuvh --delete --force-delete --exclude='.*' "/Users/myuser/Documents/miBiblioteca/Libros" my.server.com:/home/biblioteca/

Guardamos (por ejemplo, con el nombre bibliosync.libros) y convertimos el archivo en ejecutable. Para mayor comodidad, podemos añadir el directorio donde guardamos nuestro script a las rutas de búsqueda del intérprete de comandos que estemos usando. Esto se queda un poco fuera del tema, así que pongo lo que usé yo, y lo podéis adaptar a vuestro caso sin más que buscar por la red:
  • Para convertir bibliosync.libros en ejecutable: chmod og+x ~/bin/bibliosync.libros
  • Para añadir ~/bin a las rutas de búsqueda de bash (el intérprete de comandos que yo uso), basta con abrir el archivo ~/.profile (o ~/.bashrc) y buscar (o crear) una línea parecida a export PATH=$PATH:/sw/bin, y añadir dos puntos y nuestro directorio de scripts al final. Por ejemplo: PATH=$PATH:/sw/bin:~/bin.
Como yo tengo varios directorios que sincronizar, he creado varios scripts con el nombre bibliosync.lo_que_quiero_sincronizar, más que nada, para ahorrar un poco de tiempo cuando quiero sincronizar un solo directorio. Para cuando quiero una sincronización general, tengo otro script que lo único que hace es ir ejecutando los scripts particulares secuencialmente.

Por último, voy a comentar un pequeño detalle sobre SSH. Cada vez que queramos sincronizar, SSH nos va a pedir la contraseña para acceder al servidor, lo cual puede ser un poco pesado. Para evitarlo, y si la seguridad de nuestro ordenador no está comprometida (e. g., no lo vamos dejando a todo el mundo, o tenemos una cuenta de invitado sin privilegios para ello), podemos crear un archivo de clave en nuestro ordenador y copiarlo al directorio de claves autorizadas del servidor. De esta manera, nuestro ordenador se autentificará automáticamente con el servidor cada vez, sin tener que introducir nosotros la clave. Muy brevemente, sería algo así:
  • Creamos una pareja de claves (privada y pública) escribiendo ssh-keygen en nuestro ordenador. Nos pedirá una passphrase (hagámosla complicada).
  • Esto nos creará un par de archivos. Por defecto, éstos serán id_rsa e id_rsa.pub, en el directorio oculto ~/.ssh. Dejaremos id_rsa (o como lo hayamos llamado) allí, que está bien.
  • El archivo pub lo copiamos al servidor, al directorio ~/.ssh, y le cambiamos el nombre a authorized_keys. Ojo, tiene que ser en la cuenta de usuario que utilizamos para realizar la sincronización. Si ya existe un archivo authorized_keys, hay que copiar el contenido de nuestro nuevo archivo al final de aquel.
Con esto debería bastar, y nuestro backup sería tan simple como escribir el nombre del script adecuado.

No hay comentarios: