Rsync -avzHP हार्डलिंक के रूप में कॉपी करने के बजाय हार्डलिंक का अनुसरण करता है


13

मैं अपने "काम" -शेयर के प्रति घंटा / दैनिक / साप्ताहिक / मासिक बैकअप बनाने के लिए rsnapshot का उपयोग करता हूं। अब मैं rsync का उपयोग करके पूरे बैकअप-निर्देशिका को बाहरी ड्राइव पर कॉपी करने की कोशिश कर रहा हूं।

मैंने एक स्क्रीन सेशन के भीतर इस कमांड / पैरामीटर का उपयोग किया (हाँ, rsync-oute.txt झूठ dir में है जो मैं कमांड चलाता हूं)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

पूरी बात एक QNAP TS-439 पर चल रही है, आंतरिक ड्राइव एक डिस्क (कोई RAID) निर्मित EXT4 है, बाहरी ड्राइव EXT3 है।

क्या होता है: Rsync हर हार्डलिंक का अनुसरण करता है और बाहरी ड्राइव पर अपडेट किए गए हार्डलिंक को फिर से बनाने के बजाय वास्तविक फ़ाइल की प्रतिलिपि बनाता है । मैं इसे अभी पहचान नहीं पाया था, इसलिए बाहरी ड्राइव को उसी फ़ाइलों की xxx प्रतियों के साथ ट्रैश कर दिया गया।

मैं क्या हासिल करना चाहता हूं: अंतरिक्ष को बचाने के लिए हार्डलिंक को रखते हुए एक्सटर्नल ड्राइव के लिए rsnapshot द्वारा बनाई गई पूरी फाइल संरचना को कॉपी करना। नोट: यह आवश्यक रूप से rsync का उपयोग करके नहीं किया जाना चाहिए।

आपके विचारों और समय के लिए धन्यवाद। मैं आपकी मदद की सराहना करता हूं, बड़ा समय।

अद्यतन: मैंने सीखा है, कि rsnapshot सिम्लिंक का उपयोग नहीं कर रहा है, यह हार्डलिंक का उपयोग कर रहा है, इसलिए मैं अब -H विकल्प का उपयोग करता हूं, जो कि हार्डलिंक संरचना को कई स्थानों के लिए Rsnapshot को संरक्षित करना चाहिए (या हार्ड लिंक संरचना को बनाए रखना), लेकिन फिर भी यह काम नहीं करेगा ... मुझे यहां क्या समझ नहीं आ रहा है?

अद्यतन 2: मुझे इस विषय पर एक और राय / कथन यहाँ मिला: rsync के साथ-hard-links freezes Steven Monday सुझाव देता है कि हार्ड फाइल वाले बड़े फ़ाइल स्ट्रक्चर्स को rsync करने की कोशिश न करें, क्योंकि यह बहुत मेमोरी को भिगो देता है, जो rsync के लिए एक कठिन कार्य है। तो शायद एक बेहतर समाधान डेटा संरचना की एक .img मैं बैकअप करने की कोशिश कर रहा हूँ। तुम क्या सोचते हो?


मैं तुम्हारे जैसा ही कर रहा हूँ! +1। Dd दृष्टिकोण की कोशिश करेंगे
mmalmeida

जवाबों:


10

rsyncआदेश के -H(या --hard-linksअपने फाइल सिस्टम की एक प्रतिलिपि बनाने के लिए है कि बरकरार रखता है मूल की कड़ी से जुड़ा हुआ संरचना:) विकल्प होगा, सिद्धांत रूप में, आप क्या हासिल करने के लिए है, जो, संक्षेप में कोशिश कर रहे हैं है। जैसा कि मैंने एक अन्य समान प्रश्न के उत्तर में उल्लेख किया है , यह विकल्प तब विफल हो जाता है जब आपका स्रोत फाइल सिस्टम हार्ड लिंक जटिलता की एक निश्चित सीमा से आगे बढ़ता है।

उस सीमा का सटीक स्थान आपकी रैम और हार्ड लिंक की कुल संख्या (और शायद अन्य चीजों की संख्या) पर निर्भर हो सकता है, लेकिन मैंने पाया है कि इसे ठीक से परिभाषित करने की कोशिश करने का कोई मतलब नहीं है। वास्तव में क्या मायने रखता है कि दहलीज वास्तविक दुनिया की स्थितियों में पार करना बहुत आसान है, और आपको पता नहीं चलेगा कि आपने इसे पार कर लिया है, जब तक कि दिन नहीं आता है कि आप एक rsync -aHया एक cp -aसंघर्ष चलाने की कोशिश करते हैं और अंततः विफल हो जाते हैं ।

मैं जो सलाह देता हूं वह यह है: अपने भारी हार्ड लिंक्ड फाइलसिस्टम को एक इकाई के रूप में कॉपी करें, न कि फाइलों के रूप में। यही है, पूरे फाइलसिस्टम विभाजन को एक बड़े ब्लब के रूप में कॉपी करें। ऐसा करने के लिए कई उपकरण उपलब्ध हैं, लेकिन सबसे सर्वव्यापी है dd

स्टॉक फर्मवेयर के साथ, आपके QNAP NAS ddमें, साथ ही साथ निर्मित होना चाहिए fdisk। साथ fdisk, गंतव्य ड्राइव कम से कम है कि स्रोत विभाजन के रूप में बड़े रूप में एक विभाजन पैदा करते हैं। फिर, ddनए बनाए गए गंतव्य विभाजन पर अपने स्रोत विभाजन की एक सटीक प्रतिलिपि बनाने के लिए उपयोग करें।

जब ddप्रतिलिपि जारी है, तो आपको यह सुनिश्चित करना होगा कि स्रोत फाइल सिस्टम में कुछ भी नहीं बदलता है, ऐसा न हो कि आप गंतव्य पर एक दूषित प्रतिलिपि के साथ समाप्त हो जाएं। umountप्रतिलिपि बनाने की प्रक्रिया शुरू करने से पहले स्रोत के लिए ऐसा करने का एक तरीका है ; दूसरा तरीका स्रोत को केवल-पढ़ने के लिए मोड में माउंट करना है।


मान लीजिए कि मैं rsnapshot बैकअप निर्देशिका के बाहर हार्ड लिंक का उपयोग नहीं करता हूं, तो क्या मैं अभी भी परेशानी में पड़ूंगा? मैं वास्तव में हार्ड डिस्क स्थान से कम हूँ, लेकिन rsnapshot बैकअप बनाना चाहता हूँ। वर्तमान में मेरी डिस्क फुल हो गई।
श्रीधर सरनोबत

मुझे लगता है कि मैंने आपके द्वारा बताई गई स्थिति पर प्रहार किया। मेरे पास rsync के साथ बनाए गए कई स्नैपशॉट के साथ एक बैकअप निर्देशिका है। इसमें कई हार्ड लिंक के साथ कई फाइलें हैं। कुल डिस्क का उपयोग लगभग 200G है। मैं इसे 'rsync -avH' का उपयोग करके दूसरे विभाजन में कॉपी कर रहा हूं। लेकिन 4 (या 5?) दिनों और रातों के बाद, नकल की प्रक्रिया अभी भी चल रही है। मुझे लगता है कि स्रोत निर्देशिका में हार्ड लिंक की कुल संख्या से rsync पूरी तरह से भ्रमित है।
ग्वांग्लियांग

उबंटू 18.04 में यह --hard-links('s' के साथ) है।
नोबार

1

-l सीमलिंक के लिए है, यह हार्डलिंक के लिए कुछ क्यों करेगा?

(क्षमा करें यह एक उत्तर है और टिप्पणी नहीं है, मेरे पास अभी तक कोई टिप्पणी अधिकार नहीं है और इस उत्तर के लिए प्रतिक्रिया की आवश्यकता है)

एक और टिप्पणी जो एक टिप्पणी होनी चाहिए: क्या यह सभी देशी हार्डवेयर हैं या आप एक वीएम, नेटवर्क माउंट पर हैं?

संपादित करें

आप हार्डलिंक का उपयोग क्यों कर रहे हैं, इस टिप्पणी के बारे में मेरी पहले की टिप्पणी को अनदेखा करें rsnapshot

यह परीक्षण करने में मददगार होगा कि पहले दो स्थानीय निर्देशिका स्थानीय डिस्क के बीच rsync का परीक्षण करता है, फिर आपकी दूरस्थ डिस्क के विरुद्ध। यह छोटा परीक्षण -Hउम्मीद के मुताबिक विकल्प को दिखाता है। इनोड्स को दिखाने का -iविकल्प ls, इस प्रकार यह दर्शाता है कि लिंक को संरक्षित किया गया है, जिसमें कोई अतिरिक्त प्रतियां नहीं हैं।

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

एक rsync -avzHP src/ host:/tmpदूरस्थ मेजबान के लिए एक बाद में परीक्षण अभी भी हार्डलिंक बनाए रखा


आप पूरी तरह से सही हैं, कुछ और शोध के बाद मुझे पता चला कि rsnapshot सिम्बलिंक नहीं बल्कि हार्डलिंक का उपयोग कर रहा है। मैंने उसी हिसाब से अपना सवाल अपडेट किया। तो समाधान का उपयोग किया जाना चाहिए -H और rsnapshot द्वारा निर्मित हार्डलिंक संरचना को संरक्षित करने के लिए पूरी निर्देशिका (जैसा कि मैं इसे करता हूं) की नकल करता हूं, लेकिन यह अभी भी काम नहीं करता है। जब मैं डेलीहॉट से नकल करना शुरू करता हूं, तो कॉपी की जा रही है, न कि केवल बदली हुई फाइलें। // और हाँ, मैं इस ऑपरेशन के लिए Qnap TS-439 और एक बाहरी लैकी ड्राइव का उपयोग कर रहा हूं।
woerndl

क्या आप परीक्षण स्रोत dir और स्रोत में सिर्फ 2 फ़ाइलों के साथ एक परीक्षण गंतव्य dir, एक साथ हार्डलिंक करके इस समस्या को कम कर सकते हैं? इसके अलावा, आप यह कैसे निर्धारित कर रहे हैं कि लिंक सही ढंग से और अंत में संभाला नहीं गया था, हार्ड-लिंक का उपयोग क्यों करें, यदि आप -Hमैनपेज के लंबे-लंबे पाठ को पढ़ते हैं तो आप देख सकते हैं कि कई कैविएट हैं, जो मुझे कहेंगे, कोशिश करें
हार्डलिंक्स

मैं एक परीक्षण मामले का सेटअप करूँगा और आपको अपडेट रखूँगा। अब तक के विचारों के लिए आपका बहुत-बहुत धन्यवाद।
woerndl

1

यह एक लंबा शॉट है, लेकिन यदि आप एक और समाधान नहीं ढूंढ सकते हैं तो मैं सुझाव दूंगा कि USB ड्राइव को EXT4 के रूप में प्रारूपित करने की कोशिश करें। शायद यह समस्या हो सकती है: https://bugzilla.samba.org/show_bug.cgi?id=7670

स्रोत फ़ोल्डर में पर्याप्त हार्ड लिंक और एक छोटे से गंतव्य की मात्रा को देखते हुए, rsync --hard- लिंक के साथ नकल करना विफल हो सकता है। गंतव्य पर हार्ड लिंक की अधिकतम संख्या को समाप्त करने से Rsync विफल हो जाता है <...> वास्तविक मुद्दा rsync नहीं है, बल्कि अंतर्निहित फ़ाइल सिस्टम है।


मेरी समस्या पर आपकी भागीदारी के लिए धन्यवाद! ऐसा लगता है कि यह सांबा से संबंधित है। मेरा ड्राइव सीधे NAS से जुड़ा हुआ है।
woerndl

1
नमस्ते वहाँ, इस समस्या से संबंधित सांबा नहीं है। यह rsync वेबसाइट का घर है: rsync.samba.org
19

0

क्या आपने -lविकल्प जोड़ने की कोशिश की है?

मुझे पता है कि मैन पेज कहता है कि यह शामिल है, -aलेकिन मैन पेज हमेशा 100% सटीक नहीं होते हैं।


आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे अपने प्रश्न को अपडेट करना था: Rsnapshot अपनी वृद्धिशील बैकअप संरचना के निर्माण के लिए सिम्बलिंक का उपयोग नहीं कर रहा है, लेकिन हार्डलिंक का उपयोग कर रहा है। तो, वैसे भी मदद नहीं करेगा, लेकिन -H चाहिए, जो दुर्भाग्य से भी काम नहीं करता है।
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.