es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtengo errores al utilizar rsync en un script, pero no cuando uso la línea directamente en la línea de comandos.

Estoy tratando de configurar rsync para realizar copias de seguridad desde mis comparticiones de Unraid a discos externos montados en el servidor Unraid.

Tengo diferentes carpetas en diferentes comparticiones que quiero respaldar en diferentes carpetas en diferentes discos externos.
Es decir:
1. /share1/folder1/ debería sincronizarse con /externalDisk1/folder1/
2. /share1/folder2/ debería sincronizarse con /externalDisk2/folder1/
etc.

Tengo ocho de estos trabajos en total.
La idea es ejecutarlos como un trabajo cron todas las noches, y por eso los escribí todos en un script de bash.

Ejecutar las líneas de rsync una por una, o incluso como “job1; job2..” en la línea de comandos funciona muy bien, sin embargo, llamarlos desde “backup.sh” devuelve errores.

El script (con solo una línea de rsync como ejemplo):

#!/bin/sh
rsync -rtvh --progress /mnt/user/share1/folder1/ /mnt/disks/externalDrive1/Folder1/

devuelve

sending incremental file list
rsync: [Receiver] mkdir "/mnt/disks/externalDisk1/Folder1/\#015" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(784) [Receiver=3.2.3]
rsync: [sender] write error: Broken pipe (32)
rsync error: error in file IO (code 11) at io.c(823) [sender=3.2.3]

¿Alguna sugerencia sobre qué está ocurriendo y cómo solucionarlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el comando rsync no puede crear el directorio “/mnt/disks/externalDisk1/Folder1/” en la unidad externa. Este error probablemente sea causado por un problema de formato en la ruta del directorio, como un espacio adicional o caracteres invisibles.

    Para solucionar esto, intenta modificar el comando rsync para usar comillas alrededor de las rutas de directorio, de la siguiente manera:

    rsync -rtvh --progress "/mnt/user/share1/folder1/" "/mnt/disks/externalDrive1/Folder1/"
    

    Además, puedes intentar agregar la opción “–ignore-existing” para evitar que rsync intente crear directorios que ya existen en la unidad de destino.

    rsync -rtvh --progress --ignore-existing "/mnt/user/share1/folder1/" "/mnt/disks/externalDrive1/Folder1/"
    

    Asegúrate de que los permisos en los directorios y archivos que se están respaldando estén configurados correctamente para permitir que el comando rsync los lea. También puedes verificar la unidad de destino en busca de errores en el sistema de archivos o limitaciones de espacio.

    Finalmente, intenta probar cada comando rsync individualmente para asegurarte de que funcionen correctamente antes de agregarlos al script backup.sh. Esto te ayudará a identificar cualquier problema con la sintaxis del comando o las rutas de archivos.

Comments are closed.