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 [email protected]:'/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!

Joe Casadonte
la source

Réponses:

10

Je pense que la réponse à la question est mieux décrite dans cette réponse:

https://stackoverflow.com/a/27637277/1236128

--ignore-missing-args

Malheureusement, seules les versions ultérieures ont cette fonctionnalité. J'utilise RHEL 7 avec rsync 3.0.9, qui ne semble pas avoir cette option.

Jonathan Komar
la source
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 [email protected]:'/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 [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v [email protected]:'path/to/second.txt' /dest/folder/0007/
fi

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

krondor
la source