rsync establece propietario del grupo, permiso de grupo

10

Quiero usar rsync para transferir archivos desde mi computadora a un sistema remoto de Linux. Independientemente de la propiedad del grupo del archivo local, quiero establecer estos valores en el lado remoto.

Si estuviera en el sistema remoto de Linux, podría crear el directorio y establecer la propiedad y los permisos como:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory

Si creo el directorio localmente y luego uso rsync (recuerde, no tengo my_group localmente), hago:

rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest

Eso funciona, pero no puedo entender cómo configurar el propietario del grupo a través de rsync. Si hago un chmod g+s dest, my_directory tiene el propietario del grupo correcto pero todos los archivos dentro tienen el propietario del grupo incorrecto.

ChrisInEdmonton
fuente
Hola @ChrisInEdmonton, ¿encontraste una manera de hacer que esto funcione al final? En este momento me encuentro con el mismo problema, estoy ejecutando cygwin para rsync archivos desde Windows a un cuadro de Linux, pero no puedo establecer la identificación de grupo correcta de los nuevos archivos que se envían a través de: rsync -avz --delete --exclude "*.git" --chmod=ug=rwx,o=rx /cygdrive/d/projx/ [email protected]:/var/prox/Los archivos aterrizan como john: john en lugar de john: projx ( donde projx es el nombre del grupo)
John
1
Acabo de encontrar que rsync 3.1 incluye --groupmap=*:group-name'... justo después de publicar ha.
John

Respuestas:

8

En este momento, estoy buscando una manera de hacer esto en la operación rsync, en lugar de hacerlo en una operación posterior. Quiero que algunos archivos no sean legibles en todo el mundo y asignen un grupo, restringiendo así el acceso a los procesos del servidor remoto dentro de ese grupo. Pero no he encontrado uno.

Lo único que puedo imaginar es:

  1. use --delay-updates para hacer que los archivos remotos se asignen a una operación más atómica e instantánea
  2. g + rwx, o + rwx en la opción rsync --chmod

y luego ejecuta:

ssh remoteserver chgrp -R {groupname} /my/dest/folder/* && \
chmod -R o-rwx /my/dest/folder/*

fuente
Sí, creo que eso es lo que vamos a hacer. Me sorprende que no hay manera de que tú o yo podamos encontrar esto solo con rsync, pero bueno.
ChrisInEdmonton
6

Creo que falta el indicador -p en su comando ...

--chmod

Esta opción le dice a rsync que aplique una o más cadenas "chmod" separadas por comas al permiso de los archivos en la transferencia. El valor resultante se trata como si se tratara de los permisos que el lado emisor proporcionó para el archivo, lo que significa que esta opción puede no tener efecto en los archivos existentes si --perms no está habilitado .

h3.
fuente
1
El -pindicador se incluye implícitamente como parte de la -aopción (archivo).
Anthony Geoghegan el