GNU/Linux >> Tutoriales Linux >  >> Linux

Preservar los permisos de archivos y carpetas con rsync

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).


Linux
  1. Permisos de archivo en Linux con ejemplo

  2. Encuentre un archivo con los comandos de búsqueda y localización en Linux

  3. Copie archivos con SCP y Rsync

  4. Crear un nuevo usuario y otorgar permisos en MySQL

  5. Retención de permisos de archivo con Git

Cómo excluir archivos y directorios con Rsync

Permisos y propiedad de archivos de Linux explicados con ejemplos

Administre directorios y permisos de archivos con chmod Recursive

Cómo administrar permisos/propiedades de archivos y directorios en Linux

Variables de entorno de usuario con "su" y "sudo" en Linux

Montar con sshfs y escribir permisos de archivo