यदि rsync ने कोई परिवर्तन किया है, तो यह जांचने के लिए शेल स्क्रिप्ट का उपयोग करना


10

मुझे एक bash स्क्रिप्ट मिली है जो rsync की दो डायरेक्टरीज़ है। कभी-कभी बदलाव होता है, कुछ भी नहीं है।

मैं केवल एक कमांड चलाना चाहता हूं यदि rsync ने वास्तव में एक बदलाव किया है (एक फ़ाइल जोड़ें / अपडेट करें)। नहीं तो मैं इसे छोड़ देना चाहता हूं। क्या कोई वापसी प्रतिक्रिया है जिसे मुझे देखना चाहिए?

जवाबों:


11

यदि आप -i विकल्प का उपयोग करते हैं (और -v विकल्प का उपयोग नहीं करते हैं), तो rsync केवल किए गए परिवर्तनों के लिए STDOUT में लाइनें प्रिंट करेगा। आपकी स्क्रिप्ट के आधार पर, यह ऐसा दिख सकता है

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

यह वही है जो मैं चाहता हूँ ... धन्यवाद। उस तरह -i ध्वज का उपयोग करने के बारे में नहीं सोचा था।
राकेटेटुरा

स्पष्ट करने के लिए, यदि आप स्क्रिप्ट को केवल चलाना चाहते हैं यदि कोई परिवर्तन किया गया था, तो ==होना चाहिए !=
हम्क्स ०

वैसे यह जैसा है, मैंने जो देखा है, उससे यह कोड गलत है। उस कोड के रूप में आपको यह रु। रन फ़ाइन या एचएएस एरोर चल रहा है, लेकिन अगर कोई बदलाव होता है तो यह कोड जाँच नहीं करता है। अगर रुपये का अन्य संस्करण हो सकता है, तो मुझे पता नहीं है, लेकिन मैं Raspbmc में RSYNC का उपयोग कर रहा हूं (एक पुराना कार्यान्वयन जो हमारे पास है) और OSMC। यह दुखद है क्योंकि RSYNC एक अद्भुत उपकरण प्रतीत होता है।

2
साथ -iध्वज - rsync संस्करण 3.1.1आउटपुट sending incremental file listजब कोई बदलाव नहीं किया जाता है।
डोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.