मैं दो Redhat लिनक्स सर्वर कैसे अलग कर सकता हूँ?


15

मेरे पास दो सर्वर हैं जिनके पास ज्ञात अंतरों को छोड़कर एक ही सेटअप होना चाहिए।

चलाकर:

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

मैं एक सर्वर पर सभी फ़ाइलों की एक सूची पा सकता हूं और दूसरे सर्वर पर फ़ाइलों की सूची के खिलाफ इसकी तुलना कर सकता हूं। यह मुझे सर्वर पर रहने वाली फ़ाइलों के नाम में अंतर दिखाएगा।

मैं वास्तव में क्या करना चाहता हूं दोनों सर्वरों पर सभी फाइलों पर एक चेकसम चल रहा है और उनकी तुलना यह देखने के लिए करें कि सामग्री अलग कहां हैं। जैसे

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

क्या ऐसा करने का यह एक समझदार तरीका है? मैं सोच रहा था कि rysnc में पहले से ही अधिकांश कार्यक्षमता है लेकिन क्या इसका उपयोग मतभेदों की सूची प्रदान करने के लिए किया जा सकता है?


2
अगली बार जब आप का उपयोग करना चाहिए -print0के बजाय -printऔर xargs -0के बजाय xargs। आप "विषम" फ़ाइल नामों के कारण किसी भी समस्या से बचेंगे।
क्रिस्टियन सियुपिटु

जवाबों:


22

आप सही हैं, rsync इसके लिए एकदम सही है। उपयोग --itemize-changes(उर्फ -आई)। सुनिश्चित करें कि आप इसे दोनों तरफ रूट के रूप में चला सकते हैं (या मशीन के पूर्ण उपयोग के साथ कुछ अन्य उपयोगकर्ता):

rsync -ani --delete / root@remotehost:/
  • -a संग्रह के लिए है, और मूल रूप से rsync एक सटीक डुप्लिकेट बनाता है (लिंक वाले कुछ मामलों के अलावा)
  • -n ड्राई-रन के लिए है, और इसका मतलब वास्तव में कुछ भी नहीं बदला जाएगा (यह एक महत्वपूर्ण है! :))
  • -i आइटम-परिवर्तन के लिए है, और एक सरल-से-समझने-एक-बार-आप-यह-यह स्वरूप प्रदर्शित करता है कि हर फ़ाइल को अपडेट करने की आवश्यकता है (उस ट्रिगर के लिए विस्तृत मदद के तहत मैन पेज में सिंटैक्स को पूरी तरह से समझाया गया है)।
  • --delete गंतव्य पर मौजूद rsync फ़ाइलों को हटाएं, लेकिन स्रोत को नहीं।

यदि आप कुछ रास्तों को बाहर करना चाहते हैं, तो जैसे कमांड का उपयोग करें --exclude /var। बहिष्कृत पैटर्न स्रोत निर्देशिका के सापेक्ष हैं (जो इस मामले में / है, इसलिए वे प्रभावी रूप से निरपेक्ष हैं)।


आप बाहर कर देते हैं / var, आप भी बाहर निकाल देगा जहां crontabs जमा हो जाती है, जो संभवत: क्या जरूरत जांच की जानी। हालाँकि, आप चीजों को बाहर करना चाहते हैं जैसे / var / log / और / var / cache
सीन रिफ़्स्चाइडर

7

आप rsync के -c ध्वज की जांच करना चाह सकते हैं। से man rsync:

    -c, --checksum              skip based on checksum, not mod-time & size

मैं एलेक्स Jurkiewicz के जवाब के लिए एक टिप्पणी छोड़ दूंगा, लेकिन मेरे पास पर्याप्त प्रतिनिधि नहीं है: '(अभी तक ...


1
कुछ परिदृश्य मौजूद हैं जो यह ध्वज उपयोगी है। सबसे आम मैंने देखा है जब आपके पास किसी प्रकार के 'अजीब' (आमतौर पर बाइनरी) प्रारूप में संग्रहीत डेटा होता है जो एक निरंतर आकार होता है। यदि फ़ाइल सिंक के दोनों तरफ एक स्वचालित प्रक्रिया द्वारा एक ही समय में अपडेट की जाती है (जैसे कि लॉग रोटेशन या समान) rsync बस आकार / एम-टाइम पर सिंक करने पर इसे याद कर सकता है। निश्चित रूप से संभव है, लेकिन दुर्लभ है।
एलेक्स जे

मुझे उम्मीद है कि यह केवल फाइलों की सामग्री को जांचना होगा , ताकि आप मॉड-टाइम और आगे की ओर ध्यान दिए बिना तुलना कर सकें, लेकिन ऐसा प्रतीत होता है कि एलेक्स सही है ... सभी मेटा को अनदेखा करने का एक अच्छा तरीका है- डेटा और केवल सामग्री पर ध्यान देते हैं, जिस तरह से गिट करता है?
iconoclast

4

एक उपयोगी उपकरण जिस पर आपको विचार करना चाहिए वह है "rpm -Va"। यह उन सभी पैकेज्ड फाइलों की एक सूची का प्रिंट आउट लेगा, जो पैक किए जाने पर अलग-अलग हैं। यह किसी भी गैर-पैकेज्ड फाइलों को नजरअंदाज करता है, लेकिन यह उन फाइलों का अंदाजा लगाने का एक बहुत अच्छा तरीका है जो इंस्टॉल के बाद बदल गए थे, जो आधार प्रणाली का हिस्सा हैं। उनमें एक ध्वज भी शामिल है जो आपको बताता है कि क्या उन्हें कॉन्फ़िगरेशन फ़ाइल माना जाता है।

उदाहरण के लिए:

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

तो ".bashrc" और "yum-updatesd.conf" "कॉन्फ़िगरेशन" फाइलें हैं जो आकार, समय और एमडी 5 चेकसम में बदल गई हैं। "rdate" में मोड परिवर्तन है ...

RPM डेटाबेस एक बहुत ही उपयोगी चीज है।

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