# Rsync sobre sistemas remotos

# Introducción
[rsync](https://linux.die.net/man/1/rsync) es una aplicación que ofrece un sistema de transmisión de ficheros, de forma incremental que permite la generación de sistemas de backups muy efectivos. Uno de los mejores ejemplos es [Time Machine](https://support.apple.com/es-es/HT201250) de Apple, que no es sino una interface visual de rsync

Sin embargo muchos sitios expresan o ponen a disposición de los usuarios ejemplos que usados en un escenario diferente del usado en un entorno personal o corporativo, son fuente de problemas.

Como norma general se usa el parámetro `-a`  o `--archive` el cual es el equivalente a `-rlptgoD` lo cual supone que los parámetros de usuario y grupo, y los permisos de lectura, escritura y ejecución intentarán ser clonados, cosa que no funcionará e incluso creará problemas silenciosos en un entorno en el que los usuarios y grupos no son los mismos en origen que en destino.

## Parámetros de rsync para usar en sistemas remotos no coincidentes

El escenario es el de realizar un backup de un sistema completo (disco principal) en un usuario remoto (no root)

```
# rsync --devices --specials --hard-links --one-file-system --recursive --links --times --no-perms --no-group --no-owner --itemize-changes  / remote_user@remote.host:/remote/path
```
### Parámetros con rsync-time-backup 
Dado que es un programa basado en rsync con sus propias normas para anular su configuración debemos usar otro camino con `--rsync-set-flags`
```
--rsync-set-flags "-D --numeric-ids --links --hard-links -rlt --no-perms --no-group --no-owner --itemize-changes"
```

### Parámetros

Deberás ajustar los parámetros a tu escenario, pero te explico los que he usado aquí.

| Corto | Normal | Descripción |
| :------ | :--------- | :--------------- |
| -D     |  | El mismo que --devices -aspecials |
| -l       | --links | copia los enlaces simbólicos como enlaces simbólicos |
| -H     | --hard-links | preserva los enlaces duros |
| -x     |  --one-file-system | No copiará los dispositivos montados. Si tu sistemas tiene particiones como /var /usr y quieres copiar algo de aqui, esta opción NO debería estar aquí |
| -r | --recursive | Copiara recursivamente |
| -t | --times | Necesario sobre todo si no usamos -a, ya que será parte de la marca para saber si el fichero debe o no ser transferido o actualizado |
| --no-perms  | | No copiara los permisos originales. De esta forma no nos encontraremos con problemas de eliminación, uso, debidos a cuestiones de propietario /permisos. Como contrapartida, nos obliga a a tener un sistema de metadatos, que sí guarde esta información. |
| --no-group | | Para evitar el uso del grupo del propietario del fichero |
| --no-owner | | Para evitar actualizar el propietario del fichero |


## Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos.  También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18).