वास्तविक समय फ़ाइल सिंक्रनाइज़ेशन


22

क्या डिस्क में फ़ाइल लिखने के तुरंत बाद दो या अधिक लिनक्स सर्वरों के बीच फ़ाइलों को सिंक करने के लिए कोई उपकरण उपलब्ध है? rsyncआदेश मुझे इस पर सूट नहीं करता है, अगर मैं सेट क्योंकि rsyncक्रॉन में, कम से कम समय मैं सेट कर सकते हैं 1 मिनट है, लेकिन मैं वास्तविक समय के आधार पर इसकी आवश्यकता है।


2
क्या आपको एक रीड-राइट सर्वर से एक या एक से अधिक रीड-ओनली सर्वर (s) के लिए सिंक्रोनाइज़ेशन की आवश्यकता है, या क्या आपको दो-तरफा सिंक्रोनाइज़ेशन (दोनों दिशा में प्रचार के साथ), या n-way की आवश्यकता है? यदि आप दो / एन-रास्ता चाहते हैं, तो आप संघर्षों को कैसे हल करेंगे?
गिल्स एसओ- बुराई को रोकें '

जवाबों:


18

खुद इसका इस्तेमाल नहीं किया, लेकिन हाल ही में इसके बारे में पढ़ा। वहाँ एक डेमॉन कहा जाता है lsyncd, जो मुझे लगता है कि आप क्या जरूरत है।

इसके बारे में यहाँ पढ़ें


2
IMHO, यह स्वीकृत उत्तर होना चाहिए। lsyncdका उपयोग करता है inotifyऔर एफएस स्तर पर सबसे तेज होना चाहिए। Github.com/axkibe/lsyncd पर अधिक । उस पृष्ठ से: Lsyncd एक स्थानीय निर्देशिका ट्री ईवेंट मॉनिटर इंटरफ़ेस (inotify या fsevents) देखता है। यह कुछ सेकंड के लिए घटनाओं को एकत्र और संयोजित करता है और फिर परिवर्तनों को सिंक्रनाइज़ करने के लिए एक (या अधिक) प्रक्रिया (तों) को जन्म देता है। डिफ़ॉल्ट रूप से यह rsync है। Lsyncd इस प्रकार एक लाइट-वेट लाइव मिरर सॉल्यूशन है जो कि तुलनात्मक रूप से आसान है जिसे नए फाइल सिस्टम या ब्लॉक डिवाइस की आवश्यकता नहीं है और स्थानीय फाइल सिस्टम प्रदर्शन में बाधा उत्पन्न नहीं करता है।
साकिन गार्ग

5

Inotify उपकरण

से inotifyमिलकर एक इंटरफ़ेस प्रदान करें :

inotifywait

यह कमांड घटनाओं को सरल बनाने के लिए ब्लॉक करता है, जो शेल स्क्रिप्ट में उपयोग के लिए उपयुक्त है। यह फाइलों और निर्देशिकाओं के किसी भी सेट को देख सकता है, और पूरी निर्देशिका के पेड़ों को पुन: देख सकता है।

inotifywatch

यह कमांड फाइलसिस्टम उपयोग के आंकड़े एकत्र करता है और प्रत्येक इनोटिफाई इवेंट के काउंट्स को आउटपुट करता है।


4

मल्टी मास्टर मोड में कई सर्वरों के बीच रीयलटाइम फ़ाइल सिंक्रनाइज़ेशन

lsyncdवास्तविक समय के आधार पर कई सर्वरों के बीच फ़ाइलों को सिंक करने के लिए एक अच्छा उपकरण है । यहां मैंने दो सर्वरों के साथ प्रयास किया है।

होस्ट: सर्वर 1 और सर्वर 2

OS का इस्तेमाल किया: CentOS 7

दोनों सर्वरों के नीचे पैकेज स्थापित करें।

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

दोनों सर्वरों में ssh-key जेनरेट करें और authorized_keysफाइल में जोड़ें । [Server1 की authorized_keysसार्वजनिक कुंजी को server2 की और सर्वर 2 की सार्वजनिक कुंजी को server1 की authorized_keysफाइल में जोड़ें]

Server1 कॉन्फ़िगरेशन

लाइन की शुरुआत में /etc/lsyncd.confडिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करके खोलें और टिप्पणी --करें और फ़ाइल के नीचे कॉन्फ़िगरेशन जोड़ें।

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

लक्ष्य आईपी को targetपैरामीटर में बदलें ।

आप delayअपनी आवश्यकता के अनुसार पैरामीटर बदल सकते हैं । यहां इसे 1 सेकंड निर्धारित किया गया है।

अब लॉग डायरेक्टरी बनाएं।

# mkdir -p /var/log/lsyncd

lsyncdस्वचालित रूप से शुरू करने के लिए सेवा को सक्षम करें ।

# systemctl enable lsyncd.service

सेवा शुरू करें।

# systemctl start lsyncd.service

Server2 कॉन्फ़िगरेशन

सर्वर 1 के समान कॉन्फ़िगरेशन का पालन करें और targetआईपी बदलें ।

अब सिंक्रनाइज़ेशन सेट है।

आप से गतिविधि की जाँच कर सकते हैं tailf /var/log/lsyncd/lsyncd.log

उनके सुझाव के लिए मेलबर्सलान को धन्यवाद।


सेटिंग्स फ़ंक्शन के तहत देरी पैरामीटर मान्य नहीं है। इसके बजाय maxDelays चर का उपयोग करें । मैंने इस टूल को लागू कर दिया है। यह वास्तव में शक्तिशाली है।
हसनुज्जमां सत्तार

3

Syncthing एक विकल्प हो सकता है। यह बहुत तेज़ है, स्थानांतरण एन्क्रिप्ट किया गया है और कई प्लेटफार्मों के लिए ग्राहक हैं। यह परिवर्तित फ़ाइलों को तुरंत सिंक करने के लिए "inotify" का उपयोग करता है।


2

आपको इसे क्लस्टर्ड फाइलसिस्टम प्रकार समाधान के साथ संपर्क करने की आवश्यकता होगी - दो मशीनों के बीच एक सरल सिंक आपको वास्तविक समय की प्रतिक्रिया नहीं देगा।


दरअसल वो सर्वर AWS में हैं। इसलिए हमें क्लस्टर वातावरण नहीं मिल सकता है! क्या कोई और रास्ता नहीं है?
सौरव

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