permisos de archivos rsync en windows

32

Tengo un servicio rsync que sincroniza archivos de una máquina remota a una máquina que los deja en una unidad de red.

Necesito los archivos copiados para asumir los permisos nativos de la carpeta de destino.

El proceso de sincronización funciona bien, pero una vez finalizado, no puedo acceder a algunas de las carpetas: permiso denegado.

Estoy conectado como administrador de dominio; tampoco me permitirá modificar ningún permiso en dichas carpetas. ¿Lo que da?

comando de ejecución:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"
avguchenko
fuente
¿Qué comando estás usando actualmente para sincronizar?
John T

Respuestas:

24

(de http://www.samba.org/ftp/rsync/rsync.html )

En resumen: para dar los archivos de destino (antiguos y nuevos) los permisos de origen, utilice --perms.

Para otorgar a los archivos nuevos los permisos de destino predeterminados (sin modificar los archivos existentes), asegúrese de que la --permsopción esté desactivada y use --chmod=ugo=rwX(lo que garantiza que todos los bits no enmascarados se habiliten).

Si desea que este último comportamiento sea más fácil de escribir, puede definir un alias emergente para él, como colocar esta línea en el archivo ~ / .popt (lo siguiente define la opción -Z e incluye --no- g para usar el grupo predeterminado del directorio de destino):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX
avguchenko
fuente
muchas gracias. No podía recordar las banderas correctas para usar ...
Vokuhila-Oliba
2
Esto es relevante para rsync en Linux, pero no siempre resuelve el problema al rsync' a una unidad de Windows, que es lo que pregunta la publicación original.
Simon East
18

La seguridad "posix" de Cygwin me ha causado muchos problemas con los permisos de archivos NTFS de Windows, incluso --no-permscon rsync.

Descubrí que los archivos / carpetas recién creados no heredan correctamente los permisos predeterminados, pero cada archivo / carpeta termina con muchas <not inherited>entradas en la pestaña de seguridad avanzada de archivos / carpetas de Windows. (Y este problema no solo está relacionado con rsync).

Encontré esta publicación relacionada y este enlace muy útil para resolver estos problemas usando la noaclopción en el /etc/fstabarchivo de cygwin . La desventaja de esta solución es que Cygwin pierde la capacidad de establecer permisos de archivo / carpeta, pero en muchos casos esto no es importante.

(Googleando este tema probablemente encontrará referencias para configurar la variable de entorno CYGWIN = NONTSEC, pero esto es para cygwin v1.5 y no funciona en cygwin v1.7 en adelante).

micrófono
fuente
La edición del archivo / etc / fstab me lo arregló. Tuve que usar rsync dentro de cygwin en lugar de otra implementación como DeltaCopy para hacer esto.
Matt Connolly
Si solo está utilizando el paquete cwrsync (y no cygwin), ¿dónde coloca el archivo fstab?
Simon East
No uso cygwin. Tomo una unidad NTFS normal, montada en OS X, y archivos rsync. Entonces, estos archivos dentro de Windows han arruinado completamente los permisos. Buscando una solución.
Steven Lu
Parece que he estado usando el método "arriesgado" de montar NTFS en macOS usando el controlador incorporado, que se supone que es mucho menos estable que los controladores paragon / tuxera y FUSE. Así que tenlo en cuenta si estás en el mismo barco
Steven Lu
8

En Windows con DeltaCopy podría hacer que funcione con:

rsync --perms --chmod=a=rw,Da+x ...

Funcionó incluso con --recursive

Wernight
fuente
Esto funcionó principalmente, sin embargo, tuve que cambiar la opción --chmod para incluir a = rwx para que los archivos por lotes, etc. se ejecuten correctamente.
Taylor Gerring
1
Esta es la única opción que funcionó para mí. Probé los --no-perms sugeridos anteriormente y el fstab sin resultado. Este me dio solo algunos permisos <no heredados>, que eran el tipo de permisos que quería y no incluían ningún permiso de Denegación para el usuario ejecutor. ¡Gracias!
AronVanAmmers
DeltaCopy también contiene un ejecutable chmod que puede corregir los permisos después, por ejemplo, chmod -R 777 / cygdrive / g
jnnnnn
--perms es lo que me faltaba, resolver la copia como un problema de solo lectura.
Tyler S. Loeper
1

rsync, al menos en Cygwin tiene el siguiente interruptor:

-A, --acls preservar ACL (implica --perms)

Mi versión de Cygwin es:

CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 2014-04-07 13:46 x86_64 Cygwin

¡Espero que esto ayude!

Vipul
fuente
1
¡Bienvenido a Super User! Si bien esto puede responder teóricamente a la pregunta, en aras de la mejora, sería preferible incluir detalles de cómo esto responde la pregunta (citar una fuente para respaldar su reclamo es una ventaja).
G-Man
1

La respuesta mejor calificada solo funciona si está usando rsync sobre ssh en Windows. Si está usando el demonio cygwin rsync, solo usar noacl en / etc / fstab no ayuda, por cualquier razón no honra la herencia, incluso si se deshace del usuario e intenta noacl, anular, etc. Esto parece suceder si rsyncing en una unidad de nivel superior y utiliza path = / cygdrive / whatever en /etc/rsyncd.conf. En su lugar, debe hacer un punto de montaje separado en / etc / fstab y utilizarlo en su rsyncd.conf en su lugar:

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

en /etc/rsyncd.conf, tendrías algo como esto:

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

Luego tuve que reiniciar el sistema de Windows, solo reiniciar el servicio rsync solo no pareció ayudar, seguía arrojando errores chroot y chdir (a pesar de que / d_drive estaba montado y usaba chroot = false y podía escribirle). Luego, cuando se sincroniza con el sistema de Windows, use:

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/
sabujp
fuente
1

En el pasado, acabo de reasignar los permisos en Windows a mi usuario actual luego de usarlos takeownen un símbolo del sistema elevado como:

takeown /f <NameOfFolder> /r /d Y

Por supuesto, si usó los rsyncindicadores correctos en primer lugar, entonces esto es innecesario, pero si no desea volver a ejecutar los rsyncarchivos que ya ha copiado, lo recomendaría.

CodificaciónLumis
fuente
1
¡Bienvenido a Super User! Por favor lea la pregunta otra vez cuidadosamente. Su respuesta no responde a la pregunta original.
DavidPostill
Dado que la pregunta es "¿qué da?" Yo diría que su respuesta ni siquiera es una solución, sino una explicación, por lo que la mayor parte de la respuesta aquí no responde la pregunta. Esto sigue siendo una adición útil y contextualmente apropiada al problema, pero puedo moverlo a un comentario si es más apropiado.
CodingLumis
Oh, espera, no puedo agregar comentarios porque no tengo una reputación de más de 50, así que esto tendrá que quedarse aquí.
CodingLumis
correct rsync flags> y cuáles serían esos?
oldmud0
@ oldmud0 ver las respuestas que precedieron a la mía para combinaciones apropiadas de banderas que establecen los permisos durante la copia. Mi solución es ideal para aquellos que ya han copiado los archivos y no quisieron eliminarlos y copiarlos nuevamente para garantizar que los permisos sean correctos.
CodingLumis
0

Tuve este problema con rsnapshot, que usa rsync para la copia de seguridad. Lo anulé quitando --relativede rsync_long_args. Después de esa carpeta cpara el disco en sí con permisos extraños no se crea.

usuario3132194
fuente