Wie kann ich rsync dazu bringen, fehlende Dateien zu ignorieren?


9

Ich führe einen Befehl wie den folgenden auf mehreren verschiedenen Systemen aus:

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

Manchmal existiert * .log nicht und das ist in Ordnung, aber rsync generiert den folgenden Fehler:

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

Gibt es eine Möglichkeit, das zu unterdrücken? Der einzige Weg, den ich mir vorstellen kann, ist die Verwendung von Einschluss- und Ausschlussfiltern, die mir nur als PITA erscheinen. Vielen Dank!

Antworten:



2

Zur Verdeutlichung möchten Sie den Fehler nur nicht "sehen"? In diesem Fall könnten Sie einfach die Standardfehlerausgabe umleiten, aber möglicherweise fehlt Ihnen ein schwerwiegenderer Fehler, den Sie möglicherweise kennen möchten.

Beispiel für die Umleitungsfehlerausgabe

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

Wenn Sie stattdessen nur den Fehler in einer nicht vorhandenen Datei übersehen möchten, den rsync * .log-Filter nicht ändern können und die Verwendung von Includes vermeiden möchten, können Sie ihn in ein Skript einbinden, um basierend auf dem fortzufahren Bedingung.

Skriptbeispiel

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

Hoffe ich war etwas Hilfe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.