6 votos

Preservar los permisos de archivos y carpetas con rsync

Puedo mantener una copia de seguridad de mis cuentas de correo electrónico usando este comando:

sudo rsync -av --delete --progress -e "ssh -p pNumber" --rsync-path="/usr/bin/rsync" /vmail/ user@my_backup_server:/home/user/backups/vmail/

Fuente: La mayoría de las carpetas de correo electrónico son propiedad de usuario vmail.

Destino (servidor de copia de seguridad): El sistema no tiene un usuario llamado vmail.

Mi pregunta, ¿el comando anterior preservar permisos de archivos y directorios, incluso si el equipo de destino no tiene un usuario llamado vmail? Sería posible restaurar los archivos y los permisos completamente de destino al de origen, incluso si los nombres de usuario entre los dos equipos no son los mismos (algunos faltan en el servidor de copia de seguridad).

10voto

HBruijn Puntos 16577

Cómo rsync conserva la propiedad de los archivos depende de dos cosas:

  • Estás super-usuario (root) en el destino?
    De lo contrario, usted no puede crear archivos y directorios con un usuario diferente a otros de su propio.

  • La opción que las banderas están utilizando?

El -a opción incluye el -o, --owner, -g, --group opciones diseñadas para preservar la propiedad.

En el nivel de sistema de archivos de usuario y grupo propietario se almacena en UID resp. GID números. Cuando no hay asignación de UID/GID de los nombres de usuario y groupnames herramientas de simplemente mostrar los números en su lugar.
Los usuarios y grupos con el mismo nombre puede tener diferentes UID/GID de los números en diferentes sistemas.

Por defecto rsync intentará igualar la propiedad por nombre de usuario resp. groupname. 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 lugar de destino (incluso cuando tienen diferentes UID/GID de los números).
Que suele ser bastante resistente y el más predecible para los seres humanos como nosotros normalmente no se ven en la propiedad en la forma de un UID/GID de los números.

Cuando no hay coincidencia de usuario vmail está presente en el destino remoto, a continuación, una situación que va a suceder. Rsync entonces preservar la real subyacente UID/GID de los números y el número UID de la vmail de usuario en la fuente se usa para establecer el propietario.

Que debe conservador de la propiedad correcta cuando se invierte la rsync dirección y restaurar 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.

4voto

Sven Puntos 51980

Lo que rsync copia es el ID de usuario numérico del archivo, independientemente de si existe en el sistema de destino. Si un usuario con esa identificación no existe, 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.

2voto

rarawls Puntos 21

Con su caso en concreto, el verdadero problema surge cuando se trata de tiempo para restaurar los archivos. La clave sería especificar el propietario/grupo al tirar de nuevo los archivos. --chown=vmail:vmail

Suponiendo que ya has creado el usuario vmail en la nueva máquina a la cual se va a restaurar, sería cuestión de algo como lo siguiente:

sudo rsync -av --chown=vmail:vmail --force --delete --progress user@my_backup_server:/home/user/backups/vmail/ /vmail/

Haciendo de esta manera significa que no importa quien sea el dueño de los archivos en el servidor de copia de seguridad tanto tiempo como usted puede rsync a/desde que el usuario (que se implica como ya se está en true en el ejemplo).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: