मैं सभी उपनिर्देशिकाओं को कैसे बाहर कर सकता हूं लेकिन rsync में एक निर्देशिका की फाइलें शामिल करें?


13

मैं अपने उबंटू सिस्टम का बैकअप लेना चाहता हूं और देखभाल के लिए मेरे पास दो विभाजन हैं: एक है /, दूसरा है /home

मैं संभवतः बैकअप लेना चाहता हूँ /। यह इतना बड़ा भी नहीं है कि मैं इसे अपने एसडी कार्ड पर ले जा सकूं, जबकि यह बनाने के लिए पर्याप्त रूप से उत्तरदायी है कि मैं इसकी एक छवि बनाना चाहता हूं (इसीलिए मैं इस समय rsync का उपयोग करने की कोशिश कर रहा हूं)।

और के बारे में /home, यह कई उपनिर्देशिका है कि मैं के बारे में ज्यादा तो मैं संभावना उन्हें शामिल नहीं हूँ परवाह नहीं है नहीं है, लेकिन मैं इस तरह की तरह वहाँ पर फ़ाइलों, के बारे में देखभाल करने के लिए चाहते हैं .bash_history, .bashrc, .face, और इतने पर।

इसलिए मैं फ़ाइलों में शामिल करते हुए सभी उपनिर्देशिकाओं को बाहर करना चाहता हूं /home। मैं उसे कैसे प्राप्त कर सकता हूं?

--exclude "*/"काम नहीं कर रहा था। "/*/", "/**/", --include "*" --exclude */मुझे नहीं दिखाता है कि मैं क्या चाहता हूँ। कम से कम यह स्रोत फ़ोल्डर की नकल की, इसके अंदर कुछ भी कॉपी किए बिना।

जवाबों:


17

इस आदेश का प्रयास करें:

rsync -a -f"- */" -f"+ *" /home/user/ destination/

man rsync

-f, --filter=RULE           add a file-filtering RULE

सभी फ़ाइलों को शामिल करने *और dirs को बाहर करने का नियम*/

नियमित कॉपी का उपयोग करने के लिए एक और तरीका cp

cp /home/usr/* /destination

आप पुनर्निर्देशन का उपयोग करके dirs के बारे में त्रुटियों से छुटकारा पा सकते हैं

cp /home/usr/* /destination 2>/dev/null

यह केवल निर्देशिकाओं के बिना आपके घर के अंदर फ़ाइलों की प्रतिलिपि बनाता है


/ proc में एक आभासी अवास्तविक फाइल सिस्टम है, आपको इसे बैकअप से बाहर कर देना चाहिए, साथ ही आपको / tmp और / run को बाहर करना चाहिए
Maythux

चीजों के समर्थन के लिए मेरा मूल आदेश इस तरह था:rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H -b -s --exclude home/dinir/ --exclude media/ --exclude proc/kcore / /home/dinir/Temporal Site for Storing Backups
डिनर

/ proc, / tmp, और / run, चेक करें! वैसे भी, जैसा कि आप मेरी टिप्पणी में देखते हैं, मुझे घर की निर्देशिका को छोड़कर छोटे से अपवाद के साथ पूरे रूट फाइल सिस्टम का बैकअप लेना था। क्या -f" */" -f"+ *"मेरा कोड डालना सुरक्षित होगा? शायद ऐसा ही होगा -f"- home/dinir/*/" -f"+ home/dinir/*"?
डिनर

आपको इसका उपयोग ऐसे करना चाहिए-f"- home/dinir/*/" -f"+ home/dinir/*"
Maythux

लेकिन मैं आपके घर के लिए cp का उपयोग करने की सलाह देता हूं, यह बहुत आसान है
Maythux

3

यदि आप इसे --includeऔर --excludeमापदंडों के साथ हल करना चाहते हैं, तो आपको उनके क्रम को बदलना चाहिए: पहले जो आप चाहते हैं उसे बाहर करें, फिर सब कुछ शामिल करें। मैं इसे आमतौर पर इस आदेश के साथ करता हूं:

rsync -vazhP path/to/source path/to/dest --exclude '*/*/' --include '*'

2

डिफ़ॉल्ट रूप से, rsyncनिर्देशिकाओं की प्रतिलिपि नहीं बनाता है। शायद आप -aध्वज का उपयोग कर रहे हैं । यदि यह मामला है, तो ध्यान दें कि मैन पेज के अनुसार , -aइसके बराबर है -rlptgoD, इसलिए यदि आप पुनरावृत्ति नहीं करना चाहते हैं, तो बस उपयोग करें -lptgoD


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