दो स्थानीय फ़ोल्डरों को बैश में सिंक करें


23

मेरे घर निर्देशिका में एक बड़ा फ़ोल्डर "X" है, और एक फ्लैश ड्राइव पर इसकी पुरानी प्रतिलिपि है - Y. का एनालॉग क्या है rm Y; cp X Y, लेकिन पहले से मौजूद फ़ाइलों को अधिलेखित किए बिना?

जवाबों:


26

पिछले उत्तर उल्लेखों की तुलना में rsync के लिए कई और अधिक गुण हैं । आपको स्वयं उन पर ध्यान देना चाहिए:

man rsync

लेकिन आपकी समस्या के लिए मैं सुझाव दूंगा:

rsync -a --delete X Y

इस तरह, रिसीवर (वाई) के पास किसी भी फाइल को हटा देगा जो कि एक्स में नहीं है। सुनिश्चित करें कि आप इसे सही करते हैं। गलत तरीके से उपयोग किए जाने वाले रूट आसानी से आपके सिस्टम को मार सकते हैं ... :)


1
सहमत हूं कि आपको इससे बहुत सावधान रहना चाहिए। जोड़ने की कोशिश करें - कमांड को चलाने के लिए देखें कि वास्तव में कोई बदलाव किए बिना क्या होगा। यदि यह अच्छी तरह से चला जाता है तो बिना कमांड के
dry

एक छोटा सुधार जिसने मुझे पहुंचने में कुछ समय लिया rsync -a --delete X/ Y:। एक्स के बाद यह थोड़ा स्लैश मेरे लिए इरादा के अनुसार काम करता है, इसलिए यह अन्य को भी मदद कर सकता है। यहां बताया गया है: abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt

15

Rsync (1) पर एक नज़र डालें । यह वास्तव में आप क्या चाहते हैं बहुत अधिक करने का इरादा है।

rsync -av X Y

यह अपने स्वयं के प्रोटोकॉल या ssh के माध्यम से दूरस्थ प्रतिलिपि बनाने का समर्थन करता है, लेकिन इसका उपयोग स्थानीय रूप से भी किया जा सकता है।

आप जो सटीक व्यवहार चाहते हैं, उसके आधार पर आप --updateविकल्प भी पास करना चाहते हैं । यह rsync को उन फ़ाइलों को अधिलेखित नहीं करने के लिए कहेगा जो पहले से ही लक्ष्य पर मौजूद हैं और स्रोत में मौजूद लोगों की तुलना में नई हैं।

यदि आप अतिरिक्त फ़ाइलों को हटाना चाहते हैं (यानी फाइलें जो वाई में मौजूद हैं, लेकिन एक्स में नहीं हैं) तो आप --deleteविकल्प जोड़ सकते हैं ।


लेकिन यह फ़ाइलों को नहीं हटाएगा, जबकि एक्स में हटा दिया rm Y; cp X Yजाएगा।

एक्स से हटाई गई फ़ाइलों को हटाने के लिए, --delete विकल्प का उपयोग करें।
csonuryilmaz

0

निम्नलिखित कमांड के साथ, संभवतः rsnyc का उपयोग करने का प्रयास करें:

rsync -avzu /home/x /y

-u = गंतव्य पर किसी फ़ाइल को अधिलेखित न करें, यदि यह संशोधित है


लेकिन यह फ़ाइलों को नहीं हटाएगा, जबकि एक्स में हटा दिया rm Y; cp X Yजाएगा।

0

मुझे लगता है कि कुछ कार्यक्षमता जो आप विकल्प -यू (अपडेट) की तलाश में हैं वास्तव में इस विकल्प में मौजूद हैं:

"--ignore- मौजूदा" - रिसीवर पर मौजूद फ़ाइलों को अपडेट करना छोड़ दें

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