¿Cómo puedo hacer que rsync ignore los archivos que faltan?


9

Estoy ejecutando un comando como el siguiente para varios sistemas diferentes:

$ rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/.

A veces * .log no existe, y eso está bien, pero rsync genera el siguiente error:

receiving file list ... rsync: link_stat "/path/to/first/*.log" failed: No such file or directory (2)
done

¿Hay alguna forma de suprimir eso? La única forma en que puedo pensar es usar los filtros de inclusión y exclusión, que me parecen una PITA. ¡Gracias!

Respuestas:



2

Para aclarar, ¿simplemente no desea "ver" el error? Para ese caso, simplemente puede redirigir la Salida de error estándar, pero puede terminar perdiendo un error más grave que quizás desee saber.

Ejemplo de salida de error de redireccionamiento

rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/ 2>/dev/null

Si, por el contrario, solo desea perderse el error en un archivo que no existe, no puede cambiar el filtro rsync * .log y desea evitar el uso de inclusiones, puede envolverlo en un script para continuar en función del condición.

Ejemplo de guion

#!/bin/sh
# Script to Handle Rsync based on Log File Existence
if [ "$(ls -A /path/to/first/*.log > /dev/null > 2&1)" ]; then
     # Log Exists Use This Rsync
    rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v foo@machine.company.com:'path/to/second.txt' /dest/folder/0007/
fi

Espero haber sido de ayuda.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.