2009-01-04 14 views
5

मैं (ओएस एक्स) केवल तभी है कि ड्राइव माउंट किया गया है इस पार्टी स्क्रिप्ट किसी बाहरी हार्ड डिस्क को अपने बैकअप चल रहा है ...:मैं केवल निर्देशिका चलाने के लिए rsync कैसे कहूं यदि गंतव्य निर्देशिका मौजूद है?

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi 

यह काम करता है, लेकिन मैं समझ मैं rsync आदमी पेज ग़लत व्याख्या कर रहा हूँ। यदि शीर्ष स्तर की गंतव्य निर्देशिका मौजूद नहीं है तो रन को निरस्त करने के लिए कोई अंतर्निहित rsync विकल्प है?/वॉल्यूम्स/बाहरी के अस्तित्व के परीक्षण के बिना, उस नाम से एक निर्देशिका बनाई जाएगी यदि यह पहले से आरोहित नहीं है।

--existing, --ignore-non-existing 

आदमी पृष्ठ से::

उत्तर

3

इन दो झंडे के लिए आप क्या देख रहे हैं की तरह लग रहे

--existing, --ignore-गैर मौजूदा
यह rsync बताता है फ़ाइलों को बनाने (निर्देशिकाओं सहित) को छोड़ने के लिए जो अभी तक गंतव्य पर मौजूद नहीं हैं। यदि यह विकल्प --ignore-मौजूदा विकल्प के साथ संयुक्त है, तो कोई भी फाइल अपडेट नहीं की जाएगी (जो उपयोगी हो सकती है यदि आप जो करना चाहते हैं वह बाहरी फाइलों को हटा दें)।

+0

- existing के साथ, स्रोत पदानुक्रम में उनकी नई निर्देशिका बैकअप ड्राइव पर कभी नहीं बनाई जाएगी ... – mjy

+1

हां ये वे विकल्प हैं जिन्हें मैं उन तरीकों से काम नहीं कर सकता जैसा मैं चाहता हूं। यहां तक ​​कि जब दौड़ बंद हो जाता है क्योंकि गंतव्य डीआईआर मौजूद नहीं है, गंतव्य डीआईआर बनाया जाता है (हालांकि पेड़ की प्रतिलिपि नहीं बनाई जाती है)। – Marcus

2

AFAIK नहीं है, लेकिन आप स्लैश के साथ behavour अनुकरण कर सकते हैं:

rsync -av dir_to_backup /Volumes/External/;

यह एक त्रुटि के साथ बाहर निकल जाएगा यदि निर्देशिका मौजूद नहीं है (वांछित जो हो सकता है या नहीं किया जा) ।

इसके अलावा, आप हमेशा दूर का अनुकूलन कर सकते हैं:

test -e $DIR && rsync -av ...

+1

मुझे सत्य होने वाला पहला कथन नहीं मिला है। निर्देशिका पीछे की स्लैश के बावजूद बनाई गई है। मुझे अस्तित्व परीक्षण के लिए खोल अनुकूलन पसंद है, सिवाय इसके कि यदि निर्देशिका मौजूद नहीं है तो मुझे कुछ त्रुटि आउटपुट चाहिए, इसलिए मैं इसे वर्बोज़ रखूंगा। – Marcus

1

नहीं, ऐसी कोई विकल्प हो करने के लिए जहाँ तक मैं मैनपेज से देख सकते हैं नहीं लगता है।