हम एक बैकअप स्क्रिप्ट चला रहे हैं, जो पहले एक गंतव्य पर एक फ़ाइल की प्रतिलिपि बनाती है और फिर उस पर चलती tarहै।
DIR2BCK='/foo/bar'
TMPDIR=$(mktemp -d)
rsync -a ${DIR2BCK} ${TMPDIR}/ > /dev/null 2>&1
tar czf /tmp/foo.backup.tar ${TMPDIR}
इस अंतिम आदेश को चलाने के बाद, कभी-कभी निम्नलिखित चेतावनी दिखाई जाती है:
/tmp/tmp.blqspkA136: जैसे ही हम इसे पढ़ते हैं फाइल बदल जाती है
हम संपीड़न समय पर फ़ाइल परिवर्तनों से बचने के लिए गंतव्य को एक अस्थायी निर्देशिका में कॉपी करते हैं। इसके cpबजाय आदेश का उपयोग करते समय यह व्यवहार भी प्रतिलिपि प्रस्तुत करने योग्य है rsync। मेरा सारा जीवन मैंने सोचा था कि ये आदेश समकालिक थे, लेकिन यह चेतावनी विपरीत दिखाती है।
यदि मैं / और लाइनों के sleepबीच एक कमांड डालता हूं , तो चेतावनी दिखाई नहीं देती है, लेकिन मैं इसे काफी साफ समाधान नहीं मानता हूं।rsynccptar
कुछ तथ्य:
- मैंने एक ही परिणाम के साथ कमांड और
syncकमांड के बीच एक कमांड जोड़ने की कोशिश की ।rsynctar जैसा कि @jcbermu ने सुझाव दिया था कि मैंने स्क्रिप्ट बदलने की भी कोशिश की है, इसलिए दो लाइनें हैं:
rsync -a ${DIR2BCK} ${TMPDIR}/ > /dev/null 2>&1 & waitमैं कई बार स्क्रिप्ट चलाता हूं और उनमें से कुछ ने एक ही व्यवहार दिखाया है, दावा करते हैं कि नकल करते समय फ़ाइल बदल जाती है।
फाइलसिस्टम का इस्तेमाल EXT4 दोनों के लिए है
${TMPDIR}और${DIR2BCK}।${DIR2BCK}एक दूरस्थ फाइल सिस्टम पर है, वास्तव में यह एक रिमोट मशीन का सांबा माउंटपॉइंट है।${TMPDIR}स्थानीय फाइल सिस्टम पर है। हालाँकि,${DIR2BCK}स्थानीय फ़ाइल सिस्टम में बदलने से कोई फ़र्क नहीं पड़ता।- सभी फाइलसिस्टम हार्डवेयर RAID -5 आधारित हैं।
क्या ये कमांड वास्तव में सिंक्रोनस हैं? यदि नहीं, तो क्या उन्हें ऐसा करने का कोई तरीका है, या एक वैकल्पिक आदेश है?
tarशुरू होता है, rsync/ cpअभी तक नकल समाप्त नहीं हुआ है, और चेतावनी दिखाई जाती है। मैंने मान लिया कि ये आज्ञाएँ समकालिक हैं, इसीलिए मैं आश्चर्यचकित हूं।
syncयहाँ मदद नहीं कर रहा है। आप उपकरणों पर कच्चे डेटा तक नहीं पहुंच रहे हैं। // कृपया इस बारे में भी जानकारी दें कि कौन से फाइल सिस्टम दोनों पर रहते हैं $TMPDIRऔर किस $DIR2BCKपर रहते हैं।