rsync no conserva la propiedad del directorio incluso con -a

12

Uso esta invocación rsync para hacer una copia de seguridad de mi directorio de inicio:

rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"

La página de manual de rsync dice que -a implica -g y -o (entre otros modificadores), lo que debería preservar la propiedad. Sin embargo, he notado que si un directorio no existe debajo $BACKUP_MNTPOINT/$USER_HOME, se crea con la propiedad root: root en lugar de la correcta. (Esto solo sucede con los directorios justo debajo $BACKUP_MNTPOINT/$USER_HOME). ¿Porqué es eso?

$BACKUP_MNTPOINTes una unidad montada localmente. $BACKUP_MNTPOINT/$USER_HOMEtiene la propiedad y los permisos correctos. Ni $USER_HOMEtampoco $BACKUP_MNTPOINTtermina con una barra.

Tanto el sistema de archivos de origen como el de destino son XFS y su ejecución mkdir $BACKUP_MNTPOINT/$USER_HOMEcrea un directorio con la propiedad esperada.

kralyk
fuente
1
¿Qué sistema de archivos es $BACKUP_MNTPOINTy con qué opciones está montado? ¿Esto sucede solo para el $BACKUP_MNTPOINT/$USER_HOMEdirectorio padre ( ) o para todos los directorios creados? Hacer $BACKUP_MNTPOINTy $USER_HOMEterminar con un /?
terdon
Yo uso XFS para ambos /homey la unidad de copia de seguridad. Hasta ahora, creo que solo sucedió para los directorios principales. Ni $BACKUP_MNTPOINTtampoco $USER_HOMEtermina con una barra. EDITAR: ahora puedo confirmar que solo sucede en los directorios justo debajo$BACKUP_MNTPOINT/$USER_HOME
kralyk
Entonces, ¿ $BACKUP_MNTPOINT/$USER_HOMEtiene los permisos correctos pero los subdirectorios no? Por favor, editar su pregunta y agregar estos detalles. Además, aclare si mkdir $BACKUP_MNTPOINT/$USER_HOME/foocrea un directorio propiedad de su usuario si lo hace manualmente.
terdon
Sí, mkdir $BACKUP_MNTPOINT/$USER_HOME/foocrea un directorio con la propiedad del usuario.
kralyk
Sería realmente bueno ver información relevante de strace(como se especifica en una pseudo respuesta).
Pavel Šimerda

Respuestas:

18

Tuve un problema similar al usar rsyncpara hacer una copia de seguridad de mi sistema en mi servidor. Solía:

rsync -aAXSHPr \
-e ssh \
--rsync-path="sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/

La solución es que no hay realmente un problema. Sospecho que abortó el rsyncproceso una vez que vio que crea carpetas con permisos incorrectos establecidos. El quid es que rsyncsolo establece los permisos de una carpeta principal una vez que se realiza la sincronización de todas las subcarpetas y archivos de la misma.

señor basura
fuente
1
Wow, eso no se me ocurrió en absoluto, muy bien visto, gracias.
kralyk
0

Tal vez ejecute rsync a través de strace / truss y vea si recibe un error de regreso de la llamada al sistema chown (), y también para confirmar que chown () tiene la ruta correcta y UID / GID.

Jez
fuente
Un buen comentario pero no una respuesta.
Pavel Šimerda