Linux rsync कमांड गाइड: फ़ाइल बैकअप और सिंक सीखें

परिचय: rsync की शक्ति और कार्यप्रणाली

यूनिक्स तथा लिनक्स परिवेश में फ़ाइलों एवं डायरेक्टरीज़ के तीव्र अंतरण, बैकअप और सिंक्रोनाइज़ेशन के लिए rsync सबसे विश्वसनीय उपयोगिताओं में से एक है। इसकी प्रमुख विशेषता केवल परिवर्तित ब्लॉक्स को ही स्थानांतरित करना है, जिससे नेटवर्क बैंडविड्थ तथा समय दोनों की प्रचुर बचत होती है। इस गाइड में हम बुनियादी सिंक, पाथ में ट्रेलिंग स्लैश (/) के प्रभाव, और डेटा सुरक्षा से जुड़े महत्वपूर्ण फ्लैग्स का व्यावहारिक टर्मिनल अभ्यास करेंगे।

rsync इंस्टॉलेशन और स्थानीय डायरेक्टरी सिंक (-av)

अभ्यास आरंभ करने के लिए पैकेज रिपॉजिटरी इंडेक्स को रीफ्रेश करते हुए rsync पैकेज को सिस्टम पर स्थापित करते हैं।

apt-get update -qq && apt-get install -y rsync

सिंक प्रक्रिया के परीक्षण हेतु स्रोत और गंतव्य फ़ोल्डर्स तैयार करने के लिए mkdir -p /tmp/rsync_test/src /tmp/rsync_test/dest कमांड निष्पादित करें।

mkdir -p /tmp/rsync_test/src /tmp/rsync_test/dest

ट्रांसफर टेस्ट के लिए पहली टेस्ट फ़ाइल बनाने हेतु echo 'data 1' > /tmp/rsync_test/src/file1.txt चलाएं।

echo ‘data 1’ > /tmp/rsync_test/src/file1.txt

इसी प्रकार दूसरी टेस्ट फ़ाइल उत्पन्न करने के लिए echo 'data 2' > /tmp/rsync_test/src/file2.txt निष्पादित करें।

echo ‘data 2’ > /tmp/rsync_test/src/file2.txt

rsync टूल लोकल डिस्क या नेटवर्क से जुड़े सिस्टम्स के बीच डेटा की कुशल प्रतिलिपि बनाता है।
सोर्स डायरेक्टरी पाथ के अंत में फॉरवर्ड स्लैश (/) लगाकर निष्पादित करने पर डायरेक्टरी के भीतर की सभी सामग्रियां मूल मेटाडेटा के साथ गंतव्य में स्थानांतरित हो जाती हैं।
⚙️ [महत्वपूर्ण विकल्प]

-a : आर्काइव मोड; यह फ़ाइल अनुमतियों, ओनरशिप, टाइमस्टैम्प और सिम्बॉलिक लिंक्स को अपरिवर्तित रखते हुए रिकर्सिव कॉपी सुनिश्चित करता है।
-v : वर्बोज़ आउटपुट; कंसोल पर ट्रांसफर हो रही फ़ाइलों की विस्तृत जानकारी प्रस्तुत करता है।
-z : ट्रांसमिशन के दौरान डेटा कम्प्रेशन लागू करता है, जिससे नेटवर्क उपयोग घटता है।
-u : अपडेट मोड; यदि टारगेट फ़ाइल स्रोत से अधिक नवीनतम है, तो उसे ओवरराइट करने से रोकता है।
--delete : स्रोत से हटाई जा चुकी फाइलों को लक्ष्य फ़ोल्डर से भी हटाकर दोनों का सटीक मिलान बनाए रखता है।
-P : लाइव प्रोग्रेस बार (--progress) और बीच में रुके ट्रांसफर को आगे जारी रखने (--partial) की संयुक्त सुविधा देता है।
-n : ड्राई-रन; बिना कोई वास्तविक परिवर्तन किए यह जांचता है कि कमांड निष्पादित होने पर क्या परिणाम होगा।

rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/

स्रोत फ़ाइलें सटीक अनुमतियों और विशेषताओं के साथ टारगेट पर कॉपी हुई हैं अथवा नहीं, इसकी पुष्टि ls -l /tmp/rsync_test/dest चलाकर करें।

ls -l /tmp/rsync_test/dest

ट्रेलिंग स्लैश (/) का अंतर और इंक्रीमेंटल ट्रांसफर

इंक्रीमेंटल व्यवहार परखने के लिए पूर्व-निर्मित फ़ाइल में अतिरिक्त डेटा जोड़ते हैं: echo 'data 1 updated' >> /tmp/rsync_test/src/file1.txt।

echo ‘data 1 updated’ » /tmp/rsync_test/src/file1.txt

एक सर्वथा नई फ़ाइल के सिंक होने की पुष्टि करने के लिए touch /tmp/rsync_test/src/file3.txt चलाकर नई फ़ाइल जोड़ते हैं।

touch /tmp/rsync_test/src/file3.txt

अब rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/ चलाकर स्रोत के ताजा परिवर्तनों को टारगेट डायरेक्टरी पर सिंक करते हैं।
सोर्स पाथ के अंत में स्लैश (/) होने के कारण केवल आंतरिक फ़ाइलें प्रोसेस होती हैं; rsync अपरिवर्तित फ़ाइल file2.txt को अनदेखा कर देता है और केवल बदली गई file1.txt तथा नई file3.txt को ही बुद्धिमानी से सिंक करता है।

rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/

मिरर सिंक हेतु –delete और सुरक्षित सिमुलेशन (–dry-run)

विलोपन सिंक्रोनाइज़ेशन का परीक्षण करने के लिए स्रोत फ़ोल्डर से फ़ाइल मिटाने हेतु rm /tmp/rsync_test/src/file2.txt निष्पादित करें।

rm /tmp/rsync_test/src/file2.txt

डिस्क पर कोई वास्तविक बदलाव किए बिना संभावित परिणामों का जायजा लेने के लिए rsync -av --delete --dry-run /tmp/rsync_test/src/ /tmp/rsync_test/dest/ कमांड चलाएं।
--dry-run ध्वज लागू करने से यह पूर्व-सत्यापन संभव हो जाता है कि सोर्स में अनुपस्थित file2.txt को टारगेट से हटाने (deleting file2.txt) हेतु सुरक्षित रूप से चिह्नित किया गया है।

rsync -av –delete –dry-run /tmp/rsync_test/src/ /tmp/rsync_test/dest/

सिमुलेशन परिणाम सही पाने पर rsync -av --delete /tmp/rsync_test/src/ /tmp/rsync_test/dest/ चलाकर पूर्ण मिरर सिंक लागू करें।
यहाँ --delete विकल्प सक्रिय होकर सोर्स से हट चुकी file2.txt को गंतव्य फ़ोल्डर से भी स्थायी रूप से मिटा देता है।

rsync -av –delete /tmp/rsync_test/src/ /tmp/rsync_test/dest/

लक्ष्य डायरेक्टरी में file2.txt के सफलतापूर्वक हटने और केवल अद्यतन फ़ाइलों के बने रहने की पुष्टि के लिए ls -l /tmp/rsync_test/dest रन करें।

ls -l /tmp/rsync_test/dest

बड़े डेटासेट हेतु कम्प्रेशन और लाइव प्रोग्रेस मॉनिटरिंग (-avzP)

विशालकाय फ़ाइलों के ट्रांसफर का परीक्षण करने के लिए 10MB की डमी बाइनरी फ़ाइल तैयार करने हेतु dd if=/dev/urandom of=/tmp/rsync_test/src/sample_large.dat bs=1M count=10 कमांड चलाएं।

dd if=/dev/urandom of=/tmp/rsync_test/src/sample_large.dat bs=1M count=10

अब डाटा कम्प्रेशन और रीयल-टाइम स्थिति ट्रैकिंग के साथ rsync -avzP /tmp/rsync_test/src/ /tmp/rsync_test/dest/ निष्पादित करें।
-z विकल्प डेटा को संपीड़ित करके नेटवर्क खपत को कम करता है, जबकि -P विकल्प अंतरण प्रगति (100%), ट्रांसफर स्पीड और शेष अनुमानित समय को लाइव प्रदर्शित करता है।

rsync -avzP /tmp/rsync_test/src/ /tmp/rsync_test/dest/

इस गाइड में हमने लिनक्स प्रणालियों में कुशल डेटा प्रबंधन, बैकअप और ऑटोमेशन के लिए rsync के आवश्यक विकल्पों का व्यावहारिक प्रयोग देखा।
अपनी आवश्यकता के अनुसार इन फ्लैग्स का संयोजन करके आप एक त्रुटिहीन, सुरक्षित और तेज़ डेटा बैकअप अवसंरचना स्थापित कर सकते हैं।