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.
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 ...
.