Descripción general

Descripción general

Normalmente uso un cliente SSH gráfico para sincronizar un directorio local y remoto. Y tengo que establecer la propiedad de todos los archivos de roota www-data.

¿Puedo hacer lo mismo con Rsync, solo que lo hago como www-dataen lugar de root, para no tener que configurar la propiedad después?

Respuesta1

No está claro lo que desea hacer, así que déjeme suponer que desea que los archivos locales sean propiedad del usuario A y los archivos remotos sean propiedad del usuario B. Si ejecuta el siguiente comando como usuario A:

rsync [options] [email protected]:/path/to/remote/dir /path/to/local/dir

esto tendría el efecto que deseas. Pero en realidad no es un problema de rsync (así que no voy a explicar qué hará el comando anterior, me estoy centrando en tu pregunta); incluso con su cliente SSH gráfico debería poder hacer lo mismo si lo ejecuta como usuario A y lo configura para iniciar sesión en el sistema remoto como usuario B.

Respuesta2

Siempre que esté ejecutando como root, use la opción chown que está integrada en rsync:

sudo rsync --chown=www-data:group user@remoteIP:/var/www/html/ /var/www/html

(reemplace 'grupo' con el grupo que desee, o simplemente use --chown=www-data, también reemplace usuario, IP remota y cambie las carpetas a su gusto)

Si no ejecuta el comando como root, la propiedad del archivo no cambiará ya que necesita sudo para eso. Por lo tanto, tendría que ejecutar el comando como www-data, pero eso genera otras complicaciones.

Respuesta3

si puedes sudo -u www-data entonces puedes ejecutar rsync con ese usuario. Si su destino está en un servidor diferente, también deberá configurar --rsync-path en el mismo (sudo -u www-data rsync). También necesita solucionar el problema de tty (usando -t en su ssh), aunque dependiendo de su distribución y configuración del servidor ssh, podría ser muy complicado. Personalmente, creo que es más fácil simplemente usar root y hacer un chown después, a menos que el servidor no permita el inicio de sesión remoto como root.

Respuesta4

Descripción general

(srcmachine)  (rsync)   (destmachine)
  srcuser    -- SSH -->   destuser
                             |
                             | sudo su jenkins
                             |
                             v
                          jenkins

Digamos que quieres rsync:

  • De:
    • Máquina:srcmachine
    • Usuario:srcuser
    • Directorio:/var/lib/jenkins
  • A:
    • Máquina:destmachine
    • Usuario: destuseraestablecer la conexión SSH.
    • Directorio:/tmp
    • Propietario de los archivos finales: jenkins.

Solución

rsync --rsync-path 'sudo -u jenkins rsync' -avP --delete /var/lib/jenkins destuser@destmachine:/tmp

Leer más aquí:

https://unix.stackexchange.com/a/546296/116861

información relacionada