GNU/Linux >> Tutoriales Linux >  >> Linux

¿Forzar nuevos permisos en archivos después de Rsync de Seedbox?

Tengo una cuenta seedbox que uso para descargar torrents. Configuré un trabajo cron que usa rsync para descargar todos los archivos del seedbox a mi servidor ubuntu 14.04.1. La carpeta de descarga es un recurso compartido de samba, ya que anteriormente usé Windows para organizar el contenido en carpetas antes de moverlo a un lugar más permanente en mi servidor. Antes de actualizar a 14.04, usé 12.04 y todo funcionó bien.

El problema es que los archivos que obtengo del seedbox son propiedad de un usuario llamado "544" (este es el nombre de usuario generado por el seedbox, no algo octal) y mi usuario no puede eliminarlos en mi servidor. Después de cambiar los permisos en la carpeta de descarga, puedo eliminarlos. Además, he otorgado a todos los usuarios permisos para leer/escribir en la carpeta samba al compartirla.

Así que mi pregunta es esta:¿Es posible a través de algún comando elegante ejecutado para hacer rsync cambiar usuario/permisos en los archivos al descargarlo? ¿O es posible hacer que la carpeta funcione de manera que todos los archivos nuevos cambien automáticamente de usuario cuando se copien/muevan a ella? Supongo que podría poner el chmod comando en sudo cron para ejecutarse de vez en cuando para cambiar el propietario de los archivos, pero dado que a veces la cantidad de datos que se descargarán puede ser bastante grande, es difícil saber cuándo activarlo en relación con el trabajo rsync para asegurarse de que todos los archivos estén descargados.

Respuesta aceptada:

rsync solo conserva el propietario si se lo pide con -o — de lo contrario, los archivos serán propiedad del usuario que ejecuta rsync comando, al igual que cuando se crean otros archivos. -a incluye -o , sin embargo, muchos rsync comunes las líneas de comando lo incluyen. man rsync incluye un pasaje sobre esto explícitamente:

For example: if you want to use -a (--archive) but don’t want -o
(--owner),  instead  of  converting  -a  into -rlptgD, you could
specify -a --no-o (or -a --no-owner).

Entonces, en lugar de rsync -a source dest puedes usar rsync -a --no-o source dest para que los archivos sean propiedad del usuario que ejecuta el comando.

Por otro lado, generalmente solo puede cambiar el propietario de un archivo si es root, por lo que esto no surge mucho. Si es necesario ejecutar este trabajo como root por alguna razón, y desea que los archivos sean propiedad de su usuario normal en lugar de root, puede usar --chown opción:

rsync -a --chown=youruser:yourgroup ...

También hay un --usermap opción para asignaciones más complicadas, si desea conservar algunos usuarios. Toma una lista separada por comas de from:to parejas.

Relacionado:la diferencia entre &&y | en script bash?

Como opción final, dado que aparentemente está ejecutando rsync desde un trabajo cron, simplemente puede agregar la operación de cambio de propietario/permisos al trabajo cron con && chown ... .


Linux
  1. Cómo usar Rsync para sincronizar archivos nuevos o cambiados/modificados en Linux

  2. ¿Obtener nuevos archivos para heredar permisos de grupo en Linux?

  3. ¿Cómo silenciar selectivamente Rsync?

  4. ¿Rsync está cambiando los permisos del directorio?

  5. Haz una copia de seguridad de tus archivos con rsync

Acelere rsync al migrar un servidor Linux desde la línea de comandos

Linux equivalente a robocopy?

¿Cómo usar rsync desde una PC con Windows a un servidor Linux remoto?

Crear un nuevo árbol de directorios vacío a partir de un árbol existente con archivos

¿Por qué rsync no puede copiar archivos de /sys en Linux?

¿Cómo fuerzo permisos específicos para nuevos archivos/carpetas en el servidor de archivos de Linux?