Las primeras copias de seguridad las estoy efectuando usando tanto rsyncd como rsync vía ssh.
rsyncd
Este método es relativamente fácil de implementar. En el lado cliente se instala y configura el programa rsyncd de manera que publique los directorios bajo etiquetas. Se puede limitar el acceso a ellos tanto por origen de la conexión como por usuario.
[docs]
comment = Archivo de documentos personales y compartidos
path = /var/docs
use chroot = yes
read only = yes
list = yes
auth users = backuppc
ignore errors = no
ignore nonreadable = yes
transfer logging = yes
timeout = 600
refuse options = dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
La desventaja es quizás que cada vez que quieras incluir un nuevo juego de archivos debes definir otro recurso en el archivo de configuración. Además, las conexiones vía rsyncd no van cifradas y es necesario añadir una capa con ssh.
rsync y ssh
En este caso se crea una conexión ssh con una cuenta administrativa (puede ser incluso root) y se obtiene un acceso más directo al sistema de archivos. Tan directo que no hay diferencia entre definir una copia así o usar rsync directamente. Todas las opciones de inclusión y exclusión se aplican y el resultado es el mismo con la excepción de que los archivos se almacenan en el servidor de copias bajo un mecanismo de deduplicación que ahorra mucho espacio.
La conexión ssh es la que tiene más mala leche. Hay que partir de lo siguiente:
- La cuenta que crea la conexión desde el servidor es el usuario predeterminado: backuppc.
- La cuenta con la que se conecta en el cliente debe tener suficientes privilegios para leer los archivos que hay que salvar. El superusuario es una opción, pero también se puede jugar con una cuenta intermedia y emplear sudo.
- La conexión no es interactiva. No se responde a cuestiones acerca de si la IP o el host está reconocido o no en la configuración local de ssh y los procesos de copia terminan todos abrúptamente si se encuentran algo así. Los registros ayudan, claro, pero es mejor hacer pruebas primero en local para ver si por esa parte falla.
Así que lo ideal es proceder de esta forma:
- Crear una clave SSH desde el usuario backuppc
- Transferir la versión pública a la cuenta administrativa del cliente
- Asegurarse de que en el lado cliente se aceptan conexiones con claves.
- Asegurarse de que el cliente es conocido por parte de ssh en el servidor.
Para esto último es conveniente refrescar la clave ECDSA de la máquina cliente usando lo siguiente:
backuppc@backups:~/.ssh$ ssh-keyscan -t ecdsa -H cliente >> known_hosts