Comment puis-je obtenir rsync pour ignorer les fichiers manquants?


9

J'exécute une commande comme la suivante sur plusieurs systèmes différents:

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

Parfois * .log n'existe pas, et c'est OK, mais rsync génère l'erreur suivante:

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

Y a-t-il un moyen de supprimer cela? La seule façon dont je peux penser est d'utiliser des filtres d'inclusion et d'exclusion, qui me semblent juste un PITA. Merci!

Réponses:



2

Pour clarifier, vous souhaitez simplement ne pas «voir» l'erreur? Dans ce cas, vous pouvez simplement rediriger la sortie d'erreur standard, mais vous risquez de manquer une erreur plus grave que vous voudrez peut-être connaître.

Exemple de sortie d'erreur de redirection

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

Si, au lieu de cela, vous cherchez à ne manquer que l'erreur sur un fichier qui n'existe pas, vous ne pouvez pas modifier le filtre rsync * .log et vous voulez éviter d'utiliser des inclusions, vous pouvez l'encapsuler dans un script pour continuer en fonction de la état.

Exemple de script

#!/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

J'espère que j'ai été de l'aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.