Estoy usando rsync -rlptD
para copiar un directorio de otro usuario. Hay algunos archivos (no tengo forma de saberlos de antemano) que no tengo permiso para copiar. ¿Hay alguna manera de que rsync los ignore? El problema es que si rsync devuelve un valor distinto de cero, mi script bash -x se cerrará.
permissions
rsync
error-handling
JeffCharter
fuente
fuente
Respuestas:
Rsync no tiene una opción para esto. Veo dos soluciones. Una es analizar los mensajes de error de rsync; Esto no es muy robusto. El otro es generar una lista de archivos ilegibles para filtrar.
Si
find
no tiene-readable
y-executable
, reemplácelos por la-perm
directiva correspondiente .Esto supone que no hay archivos ilegibles cuyo nombre contenga una nueva línea. Si necesita hacer frente a ellos, deberá generar una lista de archivos delimitados por nulos como esta, y pasar la
-0
opción arsync
:fuente
stat()
cada archivo dos veces (una vez a través de rsync y una vez a través de buscar) sería bastante malo.\!
cita al!
operador para protegerlo contra la expansión de shell. La barra invertida no es realmente necesaria aquí ya que ningún shell se expande!
cuando es seguido por un espacio, pero no duele. ¿Qué hay de malo con los archivos ocultos?Hice una solución simple para esta situación específica:
Esto devuelve
0
si el código devuelto fue 0 o 23, y devuelve el código de salida en todos los demás casos.Sin embargo, es importante tener en cuenta que esto ignoraría todos los
Partial transfer due to error
errores, no solo los de permiso , ya que detectará todo lo que salga del código23
. Para obtener más información sobre los códigos de estado de rsync, consulte este enlace .fuente