जवाबों:
आपके कमांड के काम नहीं करने का कारण rsync के लिए मैनुअल पेज द्वारा समझाया गया है (जोर जोड़ा गया):
--delete
यह rsync को रिसीन्डिंग फाइल्स को रिसीविंग साइड (जो कि सेंडिंग साइड पर नहीं हैं) से डिलीट करने के लिए कहता है, लेकिन केवल उन डायरेक्ट्रीज़ के लिए जिन्हें सिंक्रोनाइज़ किया जा रहा है। आपने rsync से पूरी निर्देशिका (जैसे "dir" या "dir /") भेजने के लिए कहा होगा ताकि निर्देशिका की सामग्री के लिए वाइल्डकार्ड का उपयोग किए बिना (उदाहरण के लिए "dir / *") क्योंकि वाइल्डकार्ड शेल द्वारा विस्तारित हो और rsync हो, इस प्रकार प्राप्त होता है व्यक्तिगत फ़ाइलों को स्थानांतरित करने के लिए अनुरोध करें, न कि फ़ाइलों की मूल निर्देशिका। हस्तांतरण से बाहर रखी गई फ़ाइलों को भी हटाए जाने से बाहर रखा गया है जब तक कि आप --delete- बहिष्कृत विकल्प का उपयोग न करें या केवल भेजने वाले पक्ष से मेल खाते के रूप में नियमों को चिह्नित करें (फ़िल्टर नियम अनुभाग में शामिल / बहिष्कृत संशोधक देखें)।
इस प्रकार, जब आप चलाते हैं
$ rsync -d --delete SRC:{*.jpg,*.txt} DEST
DEST में अवांछित फ़ाइलों को हटाया नहीं जा रहा है क्योंकि आपने वास्तव में निर्देशिका के लिए सिंक करने के लिए नहीं कहा है, लेकिन केवल कुछ मुट्ठी भर विशिष्ट फ़ाइलों के लिए। मनचाहा परिणाम पाने के लिए कुछ इस तरह से आजमाएं:
rsync -d --delete-excluded --include '*.jpg' --include '*.txt' --exclude '*' SRC/ DEST/
ध्यान दें कि निर्देशों के शामिल होने के आदेश और मामले को बाहर करते हैं। अनिवार्य रूप से, प्रत्येक फ़ाइल को उस क्रम में शामिल या बाहर किए गए पैटर्न के खिलाफ जांच की जाती है जो वे दिखाई देते हैं। इस प्रकार, .jpg या .txt एक्सटेंशन वाली फाइलें तब से सिंक की जाती हैं, क्योंकि वे "शामिल" पैटर्न से मेल खाने से पहले "शामिल" पैटर्न से मेल खाते हैं। बाकी सब कुछ --exclude '*'
पैटर्न द्वारा बाहर रखा गया है । --delete-excluded
विकल्प सुनिश्चित करता है कि DEST पक्ष पर भी बाहर रखा गया फ़ाइलें नष्ट हो जाती हैं।
--delete-excluded
। इसके बिना, केवल *.jpg
और *.txt
गंतव्य स्थान पर हटा दिया जा सकता है। इसके साथ, असंबंधित फ़ाइलें भी हटा दी जाएंगी। आप rsync फ़िल्टर पर इस ट्यूटोरियल में रुचि ले सकते हैं ।