2011-12-20 15 views
18

में निर्देशिकाएं न दिखाएं क्या कोई जानता है कि कोई rsync विकल्प है, ताकि ट्रैवर्स की जा रही निर्देशिका stdout पर दिखाई न दे।rsync आउटपुट

मैं संगीत पुस्तकालयों को समन्वयित कर रहा हूं, और बड़ी मात्रा में निर्देशिकाएं यह देखने में बहुत मुश्किल बनाती हैं कि वास्तव में कौन से फ़ाइल परिवर्तन हो रहे हैं। मैंने पहले से ही कोशिश की है -v और -i, लेकिन दोनों निर्देशिका भी दिखाते हैं।

उत्तर

19

आप अपने rsync आदेश में --delete उपयोग कर रहे हैं, grep -E -v '/$' बुला के साथ समस्या यह है कि यह इस तरह की जानकारी लाइनों को छोड़ देते हैं जाएगा :

deleting folder1/ 
deleting folder2/ 
deleting folder3/folder4/ 

आप एक बैकअप और दूरस्थ फ़ोल्डर बना रहे हैं पूरी तरह से एक्स कारण के लिए नष्ट कर दिया गया है, यह भी बाहर अपने स्थानीय फ़ोल्डर मिटा क्योंकि आप हटाने लाइनों नहीं दिख रहा होगा।

पहले से ही मौजूदा फ़ोल्डर को छोड़ देते हैं, लेकिन एक ही समय में हटाया जा रहा लाइनों रखने के लिए, आप इस अभिव्यक्ति का उपयोग कर सकते हैं:

rsync -av --delete remote_folder local_folder | grep -E '^deleting|[^/]$' 
+0

अच्छा जवाब। फ़ाइल समन्वयन के लिए, मैं आदेश चलाने से पहले एक शुष्क रन करना पसंद करता हूं इसलिए मैं '-n' विकल्प का उपयोग करता हूं। पठनीयता के लिए, मैंने रिक्त रेखा, 'rsync -av --delete remote_folder local_folder शामिल करने के लिए grep regex को संशोधित किया है। grep -E '^ हटाना | [^ /] $ |^$' ' –

11

मुझे grep -E -v '/ $' के माध्यम से पाइपिंग द्वारा फ़िल्टर करने का लुत्फ उठाना होगा जो स्लैश (निर्देशिका) के साथ समाप्त होने वाली रेखाओं को हटाने के लिए लाइन एंकर के अंत का उपयोग करता है।

यहाँ डेमो टर्मिनल सत्र जहाँ मैं यह जाँच है ...

[email protected]:~$ mkdir rsynctest 
[email protected]:~$ cd rsynctest/ 
[email protected]:~/rsynctest$ mkdir 1 
[email protected]:~/rsynctest$ mkdir 2 
[email protected]:~/rsynctest$ mkdir -p 1/first 1/second 
[email protected]:~/rsynctest$ touch 1/first/file1 
[email protected]:~/rsynctest$ touch 1/first/file2 
[email protected]:~/rsynctest$ touch 1/second/file3 
[email protected]:~/rsynctest$ touch 1/second/file4 

[email protected]:~/rsynctest$ rsync -r -v 1/ 2 
sending incremental file list 
first/ 
first/file1 
first/file2 
second/ 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 


[email protected]:~/rsynctest$ rsync -r -v 1/ 2 | grep -E -v '/$' 
sending incremental file list 
first/file1 
first/file2 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 
+5

मैं अपने आप को एक ही निष्कर्ष पर पहुंचा। यह सिर्फ मूर्खतापूर्ण लगता है कि rsync में ऐसा करने के लिए कोई स्विच नहीं है। सलाह के लिये धन्यवाद! –

संबंधित मुद्दे