Jak zmusić rsync do ignorowania brakujących plików?


9

Wykonuję polecenie jak poniżej dla kilku różnych systemów:

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

Czasami * .log nie istnieje i to jest OK, ale rsync generuje następujący błąd:

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

Czy jest jakiś sposób, aby to ukryć? Jedynym sposobem, jaki mogę wymyślić, jest użycie filtrów włączania i wyłączania, które wydają mi się PITA. Dzięki!

Odpowiedzi:



2

Aby to wyjaśnić, chciałbyś po prostu nie „zobaczyć” błędu? W takim przypadku możesz po prostu przekierować standardowe wyjście błędów, ale może się okazać, że brakuje poważniejszego błędu, o którym możesz chcieć wiedzieć.

Przykład wyjścia błędu przekierowania

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

Jeśli zamiast tego chcesz pominąć błąd tylko w pliku, który nie istnieje, nie możesz zmienić filtru rsync * .log i chcesz uniknąć użycia opcji include, możesz zawinąć go w skrypt, aby kontynuować na podstawie stan: schorzenie.

Przykład skryptu

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

Mam nadzieję, że pomogłem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.