लापता फ़ाइलों को अनदेखा करने के लिए मुझे 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

क्या इसे दबाने का कोई तरीका है? एकमात्र ऐसा तरीका है जिसके बारे में मैं सोचता हूं कि इसमें फ़िल्टर शामिल करना और बाहर करना शामिल है, जो मुझे एक PITA लगते हैं। धन्यवाद!

जवाबों:


10

मुझे लगता है कि इस उत्तर में प्रश्न का उत्तर सबसे अच्छा बताया गया है:

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

--ignore-missing-args

दुर्भाग्य से, केवल बाद के संस्करणों में यह कार्यक्षमता है। मैं rsync 3.0.9 के साथ RHEL 7 चला रहा हूं, जिसमें यह विकल्प नहीं है।


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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.