La forma en que rsync preserva la propiedad de los archivos depende de dos cosas:
-
¿Es usted superusuario (raíz) en el destino?
De lo contrario, no puede crear archivos y directorios con un usuario diferente al suyo. -
¿Qué banderas de opción estás usando?
El -a
la opción incluye el -o, --owner
, -g, --group
opciones diseñadas para preservar la propiedad.
En el nivel del sistema de archivos, la propiedad del usuario y del grupo se almacena en el UID resp. números GID. Cuando no hay asignación de UID/GID a nombres de usuario y nombres de grupo, las herramientas simplemente mostrarán esos números en su lugar.
Los usuarios y grupos con los mismos nombres pueden tener diferentes números de UID/GID en diferentes sistemas.
Por defecto, rsync intentará hacer coincidir la propiedad por nombre de usuario resp. nombre de grupo . En otras palabras, cuando el usuario vmail
es el propietario de un archivo en la fuente, rsync hará que el usuario vmail
también el propietario en el destino (incluso cuando tengan diferentes números UID/GID).
Eso suele ser bastante resistente y lo más predecible para los humanos, ya que normalmente no consideramos la propiedad en forma de números UID/GID.
Cuando no hay un usuario coincidente vmail
está presente en el destino remoto, entonces ocurrirá un escenario alternativo. Rsync luego conservará los números UID/GID subyacentes reales y el número UID del vmail
El usuario en la fuente se utilizará para establecer el propietario.
Eso debería preservar la propiedad correcta cuando invierta la dirección de rsync y restaure la copia de seguridad.
man rsync
:
-o, --owner
This option causes rsync to set the owner of the destination file to be the same as the source file,
but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super
options). Without this option, the owner of new and/or transferred files are set to the invoking user
on the receiving side.
The preservation of ownership will associate matching names by default, but may fall back to using the
ID number in some circumstances (see also the --numeric-ids option for a full discussion).
--numeric-ids
With this option rsync will transfer numeric group and user IDs rather than using user and group names
and mapping them at both ends.
By default rsync will use the username and groupname to determine what ownership to give files. The
special uid 0 and the special group 0 are never mapped via user/group names even if the --numeric-ids
option is not specified.
If a user or group has no name on the source system or it has no match on the destination system, then
the numeric ID from the source system is used instead. See also the comments on the "use chroot" set‐
ting in the rsyncd.conf manpage for information on how the chroot setting affects rsync’s ability to
look up the names of the users and groups and what you can do about it.
Que rsync
copias es el ID de usuario numérico del archivo, independientemente de si existe en el sistema de destino. Si no existe un usuario con esa identificación, ls
etc. solo mostrará ese número en lugar de un nombre. Si esa identificación de usuario pertenece a otro nombre de usuario en el sistema de destino, este usuario ahora será el propietario del archivo.
La copia de seguridad y la restauración funcionarán sin problemas en este escenario.
Con su caso específicamente, el verdadero problema surge cuando llega el momento de restaurar los archivos. La clave sería especificar el propietario/grupo deseado cuando retire los archivos. --chown=vmail:vmail
Suponiendo que ya haya creado el usuario vmail en la nueva máquina a la que restaurará, emitiría algo como lo siguiente:
sudo rsync -av --chown=vmail:vmail --force --delete --progress [email protected]_backup_server:/home/user/backups/vmail/ /vmail/
Hacerlo de esta manera significa que no importa quién es el propietario de los archivos en el servidor de copia de seguridad, siempre que pueda sincronizar hacia/desde ese usuario (lo que se supone que ya es cierto en su ejemplo).