Rsync के माध्यम से डिस्टर्ब से विलुप्त फ़ाइलों को हटाएं?


51

कहो मेरे पास है

SRC 
  001.jpg
  002.jpg
  001.txt
  a.zip

DEST
  hello.jpg

rsync -d --delete SRC:{*.jpg,*.txt} DEST

यह DEST से hello.jpg को नहीं हटाता, किसी भी विचार को कैसे संग्रहित किया जाए?

जवाबों:


72

आपके कमांड के काम नहीं करने का कारण 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 पक्ष पर भी बाहर रखा गया फ़ाइलें नष्ट हो जाती हैं।


@Cheng, देखभाल थोड़ा और अधिक समझाने के लिए? यदि कोई समस्या / सुधार है तो मुझे अपना उत्तर अपडेट करके खुशी होगी।
स्टीवन डी

यह काम करता हैं। मेरा अनुमान। - अतिरिक्त चीजें मुझे भ्रमित कर रही हैं, मुझे लगता है कि इसे फिर से स्थानांतरित कर दिया गया था।
चेंग

मैंने अपना उत्तर कुछ और समझाने के लिए संपादित किया है।
स्टीवन डी

2
@ कांग: मुझे संदेह है कि आप नहीं चाहते --delete-excluded। इसके बिना, केवल *.jpgऔर *.txtगंतव्य स्थान पर हटा दिया जा सकता है। इसके साथ, असंबंधित फ़ाइलें भी हटा दी जाएंगी। आप rsync फ़िल्टर पर इस ट्यूटोरियल में रुचि ले सकते हैं ।
गाइल्स का SO- बुराई पर रोक '16

3
धन्यवाद! मेरे लिए मैं स्रोत निर्देशिका पर अनुगामी स्लैश को याद कर रहा था।
विघ्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.