Як я можу заставити rsync ігнорувати відсутні файли?


9

Я виконую команду на зразок наступної для декількох різних систем:

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

Іноді * .log не існує, і це нормально, але rsync генерує таку помилку:

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

Чи є якийсь спосіб придушити це? Єдиний спосіб, що я можу придумати, - це використовувати фільтри включення та виключення, які мені просто здаються ПІТА. Дякую!

Відповіді:


10

Я думаю, що відповідь на питання найкраще описана в цій відповіді:

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

--ignore-missing-args

На жаль, лише більш пізні версії мають цю функціональність. У мене працює RHEL 7 з rsync 3.0.9, який, схоже, не має цього варіанту.


2

Для уточнення, ви просто хочете не "бачити" помилку? У такому випадку ви можете просто перенаправити стандартний вихід помилок, але ви можете пропустити більш серйозну помилку, про яку ви могли б хотіти знати.

Приклад виводу помилки перенаправлення

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

Якщо замість цього ви хочете лише пропустити помилку у файлі, який не існує, ви не можете змінити фільтр rsync * .log, і ви хочете уникнути використання включає, ви можете обернути його в сценарій, щоб продовжити на основі хвороба.

Приклад сценарію

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

Сподіваюсь, мені була якась допомога.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.