कैसे करें मार्गदर्शिकाएँ

SSH के जरिए rsync कमांड से दो सर्वरों के बीच बड़े फाइल तेज़ी से कैसे ट्रांसफर करें

  • 18 पढ़ने में कुछ मिनट लगेंगे
  • Hostragons टीम
SSH के जरिए rsync कमांड से दो सर्वरों के बीच बड़े फाइल तेज़ी से कैसे ट्रांसफर करें

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

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

इस गाइड में हम दो Linux सर्वरों के बीच SSH के जरिए rsync कमांड से बड़े फाइल ट्रांसफर करने की प्रक्रिया को स्टेप-बाय-स्टेप वास्तविक कमांड उदाहरणों के साथ समझाएंगे। साथ ही परफॉर्मेंस बढ़ाने वाले पैरामीटर्स, सुरक्षा जांच, एरर हैंडलिंग, टेस्ट ट्रांसफर के तरीके और प्रोडक्शन में जाने से पहले ध्यान देने वाली बातों को भी साझा करेंगे। यदि आप नया VPS या होस्टिंग प्लेटफ़ॉर्म सेटअप कर रहे हैं, तो इस गाइड को फॉलो करने से पहले सुनिश्चित करें कि स्रोत और लक्ष्य दोनों सर्वरों में पर्याप्त डिस्क स्पेस, SSH एक्सेस और सही यूजर परमिशन मौजूद हैं। संबंधित इंफ्रास्ट्रक्चर के लिए आप Hostragons VPS सर्वर समाधान और लिनक्स होस्टिंग पैकेज पेज देख सकते हैं।

rsync क्या है और बड़े फाइल ट्रांसफर में इसे क्यों चुनें?

rsync एक पावरफुल कमांड लाइन टूल है जो लोकल सिस्टम या रिमोट सर्वरों के बीच फाइल और डायरेक्टरी को सिंक्रोनाइज़ करता है। इसकी सबसे खास बात इसका डेल्टा ट्रांसफर एल्गोरिदम है, जो हर बार पूरी फाइल भेजने की बजाय केवल बदले हुए हिस्सों को ही ट्रांसफर करता है। उदाहरण के तौर पर, अगर 80 GB के बैकअप में सिर्फ 2 GB बदलाव हुआ है, तो rsync पूरी फाइल दोबारा ट्रांसफर करने के बजाय सिर्फ 2 GB के बदलाव भेजेगा।

SSH ट्रांसफर को एन्क्रिप्टेड बनाता है, यानी rsync कमांड के जरिए डेटा नेटवर्क पर बिना एन्क्रिप्शन के नहीं जाता। यह खास तौर पर ग्राहक डेटा, ई-कॉमर्स ऑर्डर रिकॉर्ड, मीडिया आर्काइव, डेटाबेस बैकअप और स्पेशल एप्लिकेशन फाइल्स के लिए जरूरी है। होस्टिंग की दुनिया में डेटा सुरक्षा केवल SSL सर्टिफिकेट तक सीमित नहीं है; सर्वर-टू-सर्वर ट्रांसफर चैनल भी सुरक्षित होना चाहिए। जैसे वेबसाइट ट्रैफिक के लिए SSL प्रमाणपत्र लगाया जाता है, वैसे ही सर्वर के बीच फाइल ट्रांसफर में SSH एन्क्रिप्शन ज़रूरी है।

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

SSH के जरिए rsync कमांड कब इस्तेमाल करें?

SSH rsync कमांड खासकर तब आदर्श है जब आपको बड़े, कई या बार-बार बदलने वाले फाइल ट्रांसफर करने हों। छोटे-से विज़ुअल फोल्डर के लिए मैनुअल SFTP ठीक हो सकता है, लेकिन हजारों फाइल, अलग-अलग परमिशन और बड़े आर्काइव के लिए rsync बेहतर और भरोसेमंद विकल्प है।

  • पुराने सर्वर से नए VPS सर्वर पर वेबसाइट माइग्रेट कर रहे हों।
  • WordPress uploads जैसे हजारों मीडिया फाइल वाले फोल्डर ट्रांसफर कर रहे हों।
  • रोज़ाना, साप्ताहिक या मासिक बैकअप किसी दूसरे सर्वर पर कॉपी कर रहे हों।
  • डेटा सेंटर या होस्टिंग प्रदाता बदल रहे हों।
  • एप्लिकेशन फाइल्स को प्रोडक्शन और बैकअप एनवायरनमेंट के बीच सिंक्रोनाइज़ कर रहे हों।
  • लंबे समय के लिए ट्रांसफर कर रहे हों जहाँ कनेक्शन कटने का डर हो।

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

शुरू करने से पहले जरूरी तैयारी

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

1. SSH एक्सेस की पुष्टि करें

स्रोत सर्वर से लक्ष्य सर्वर तक SSH कनेक्शन सफल होना चाहिए। इसकी जांच इस तरह करें: ssh उपयोगकर्ता@लक्ष्य-सर्वर-ip। अगर SSH कोई अलग पोर्ट यूज़ कर रहा हो तो: ssh -p 2222 उपयोगकर्ता@लक्ष्य-सर्वर-ip। अगर यह टेस्ट फेल होता है तो rsync भी काम नहीं करेगा। फायरवॉल, Fail2ban, SSH पोर्ट, यूजर परमिशन, पासवर्ड या की ऑथेंटिकेशन चेक करें।

2. rsync पैकेज इंस्टॉल है या नहीं, देखें

ज्यादातर Linux डिस्ट्रो में rsync प्री-इंस्टॉल आता है, फिर भी जांच लें। Debian/Ubuntu में rsync --version कमांड से पता चलता है। अगर नहीं है तो apt install rsync से इंस्टॉल करें। AlmaLinux, Rocky Linux या CentOS में dnf install rsync या yum install rsync कमांड काम करेगी। Hostragons के Linux VPS पर यह इंस्टॉलेशन सेकंड्स में हो जाता है।

3. डिस्क स्पेस जांचें

अगर लक्ष्य सर्वर में पर्याप्त खाली जगह नहीं होगी तो ट्रांसफर बीच में रुक जाएगा। स्रोत फोल्डर का साइज़ देखने के लिए du -sh /source/path कमांड का इस्तेमाल करें। लक्ष्य सर्वर पर df -h से डिस्क स्पेस चेक करें। सिर्फ फाइल साइज़ के बराबर जगह ही नहीं, टेम्प फाइल्स और लॉग्स के लिए भी स्पेस रखें। जैसे अगर 500 GB डेटा ट्रांसफर करना है तो लक्ष्य सर्वर पर कम से कम 550-600 GB खाली जगह होनी चाहिए।

4. जरूरी सर्विसेज और बदलने वाले फाइल्स को प्लान करें

लाइव वेबसाइट पर ट्रांसफर के दौरान फाइल्स अपडेट हो सकती हैं, जैसे यूजर अपलोड, कैश फोल्डर और लॉग फाइल्स। बड़े ट्रांसफर में पहले मेन डेटा भेजें, फिर साइट को मेंटेनेंस मोड में डालकर आखिरी बार rsync चलाएं। इससे डाउनटाइम मिनटों तक सीमित हो जाता है। WordPress साइट के लिए WordPress होस्टिंग माइग्रेशन गाइड पढ़कर प्रक्रिया को बेहतर समझ सकते हैं।

बुनियादी rsync कमांड: दो सर्वरों के बीच फाइल ट्रांसफर

सबसे सामान्य कमांड यह होता है: rsync -avz /source/path/ user@target-ip:/target/path/। इसमें -a आर्काइव मोड है जो परमिशन, टाइमस्टैम्प्स, और सिम्बोलिक लिंक को सुरक्षित रखता है। -v डिटेल आउटपुट दिखाता है, और -z ट्रांसफर के दौरान फाइल को कम्प्रेस करता है। फोल्डर के अंत में स्लैश महत्वपूर्ण है; /source/path/ लिखने पर फोल्डर के अंदर की फाइलें कॉपी होंगी, जबकि /source/path लिखने पर पूरा फोल्डर कॉपी होगा।

मान लीजिए आपके पास पुराने सर्वर में /var/www/site/public_html/ में 180 GB वेब फाइल्स हैं जिन्हें नए सर्वर के उसी पाथ में ट्रांसफर करना है। कमांड होगी: rsync -avz /var/www/site/public_html/ root@203.0.113.20:/var/www/site/public_html/। यह SSH के जरिए फाइल ट्रांसफर करेगा।

अगर आप root यूजर से ट्रांसफर नहीं करना चाहते तो लक्ष्य सर्वर पर एक ऐसा यूजर बनाएं जिसे उस डायरेक्टरी में लिखने की अनुमति हो। जैसे deploy यूजर बना सकते हैं और फोल्डर की ओनरशिप उसी के नाम कर सकते हैं। प्रोडक्शन में root से सीधे काम करना आसान होता है लेकिन सुरक्षा कारणों से लिमिटेड परमिशन वाला यूजर बेहतर रहता है।

सिफारिश किए गए सुरक्षित और भरोसेमंद rsync पैरामीटर

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

rsync -aHAXv --numeric-ids --partial --progress --append-verify -e ssh /source/path/ user@target-ip:/target/path/

यहां -a आर्काइव मोड है, -H हार्ड लिंक की जानकारी रखता है, -A ACL परमिशन बचाता है, -X एक्सटेंडेड एट्रीब्यूट को मेंटेन करता है। --numeric-ids यूजर और ग्रुप नेम की बजाय आईडी से मैच करता है, जो अलग सर्वरों पर नाम बदलने पर काम आता है। --partial आंशिक फाइल्स को डिलीट नहीं करता, --progress ट्रांसफर स्टेटस दिखाता है और --append-verify बड़े फाइल में जहां से छोड़ा था वहीं से आगे बढ़ते हुए सत्यापन करता है।

हर पैरामीटर हर सिस्टम पर जरूरी नहीं है। साधारण वेबसाइट ट्रांसफर में -aHAX काफी है, जबकि खास फाइल परमिशन वाली एप्लिकेशन में ACL और एक्सटेंडेड एट्रीब्यूट जरूरी हो सकते हैं। इसलिए पहले टेस्ट ट्रांसफर करना बेहतर होता है।

अगर SSH पोर्ट डिफ़ॉल्ट 22 से अलग हो तो कमांड कैसे बने?

सिक्योरिटी के लिए कभी-कभी SSH डिफ़ॉल्ट पोर्ट 22 की बजाय कोई अन्य पोर्ट होता है। ऐसे में rsync में SSH पैरामीटर के जरिए पोर्ट बताना पड़ता है। उदाहरण: rsync -avz -e ssh -p 2222 /source/path/ user@target-ip:/target/path/। लेकिन सही तरीका यह है कि -e पैरामीटर के अंदर ssh और पोर्ट साथ में लिखें: rsync -avz -e 'ssh -p 2222' /source/path/ user@target-ip:/target/path/।

कुछ JSON या पैनल में सिंगल कोट्स अलग तरह से काम कर सकते हैं, इसलिए टर्मिनल में सही सिंटैक्स का ध्यान रखें। अगर SSH की के साथ कनेक्ट हो रहे हैं तो -i पैरामीटर भी जोड़ सकते हैं: rsync -avz -e 'ssh -p 2222 -i /root/.ssh/id_rsa' /source/path/ user@target-ip:/target/path/। यह तरीका ऑटोमेशन और क्रॉन जॉब्स में बहुत कारगर है।

ट्रांसफर से पहले टेस्ट: --dry-run का इस्तेमाल

बड़े डेटा ट्रांसफर से पहले सबसे प्रोफेशनल तरीका है --dry-run पैरामीटर का उपयोग। यह फाइल कॉपी नहीं करता बल्कि दिखाता है कि कौन-कौन सी फाइलें ट्रांसफर होंगी। इससे गलत डायरेक्टरी, टारगेट पाथ या अनचाहे डिलीट्स पकड़ में आ जाते हैं।

टेस्ट कमांड: rsync -avz --dry-run /var/www/site/ user@target-ip:/var/www/site/। आउटपुट में ट्रांसफर होने वाली फाइलें, बनाई जाने वाली डायरेक्टरी और ऑपरेशन का सारांश दिखता है। अगर --delete पैरामीटर इस्तेमाल कर रहे हैं तो dry-run और भी जरूरी है, क्योंकि --delete स्रोत में न हो ऐसी फाइल्स लक्ष्य से हटा देता है। सही उपयोग से लक्ष्य पूरी तरह स्रोत की छवि बन जाता है, गलत पाथ पर इसे चलाने पर भारी डेटा लॉस हो सकता है।

प्रोफेशनल तरीका होता है: पहले SSH टेस्ट, फिर डिस्क स्पेस चेक, उसके बाद rsync --dry-run, छोटे फोल्डर पर रियल टेस्ट, और अंत में मेन ट्रांसफर। यह थोड़ा समय बढ़ाता है लेकिन घंटों के खराब ट्रांसफर को रोकता है।

परफॉर्मेंस के लिए कम्प्रेशन, बैंडविड्थ और एन्क्रिप्शन सेटिंग्स

rsync की परफॉर्मेंस केवल फाइल साइज़ पर निर्भर नहीं है। सर्वर के CPU, डिस्क टाइप, नेटवर्क लैग, बैंडविड्थ और फाइल काउंट भी महत्वपूर्ण हैं। बहुत सारी छोटी फाइल्स बड़े फाइल से धीमी ट्रांसफर होती हैं क्योंकि हर फाइल के मेटाडेटा ऑपरेशन होते हैं। NVMe डिस्क वाले VPS में फाइल स्कैनिंग और राइटिंग बेहतर होती है। इसलिए भारी ट्रांसफर के लिए NVMe VPS सर्वर का विकल्प देखें।

-z कम्प्रेशन टेक्स्ट फाइल्स, लॉग्स और कुछ बैकअप में मदद करता है। लेकिन पहले से कम्प्रेस्ड (zip, tar.gz, jpg, mp4, gzip) फाइल्स में CPU खर्च बढ़ता है और फायदा कम होता है। 1 Gbps नेटवर्क पर बड़े मीडिया फाइल ट्रांसफर में -z छोड़ना बेहतर हो सकता है। कम बैंडविड्थ और टेक्स्ट फाइल्स में -z बैंडविड्थ बचाता है।

बैंडविड्थ लिमिट के लिए --bwlimit इस्तेमाल करें। जैसे --bwlimit=50000 से 50 MB/s तक सीमित होगा। लाइव वेबसाइट के ट्रैफिक को प्रभावित न करने के लिए यह जरूरी है। प्रोडक्शन में भी ट्रांसफर को रात के समय या कम ट्रैफिक में करना, बैंडविड्थ लिमिट लगाना और प्रोसेस के दौरान लोड औसत मॉनिटर करना अच्छी प्रैक्टिस है।

rsync, scp, SFTP और FTP की तुलना

rsync, scp, SFTP और FTP की तुलना

फाइल ट्रांसफर के कई तरीके हैं, लेकिन हर एक के फायदे-नुकसान अलग हैं। नीचे के टेबल में बड़े फाइल और सर्वर ट्रांसफर के लिए कौन सा टूल कब बेहतर है, इसका सारांश है।

rsync, scp, SFTP और FTP की तुलना
तरीकासुरक्षाकंटिन्यूबड़े फाइल प्रदर्शनसबसे उपयुक्त
rsync + SSHउच्चमजबूतबहुत अच्छासर्वर माइग्रेशन, बैकअप, सिंक्रोनाइज़ेशन
scpउच्चसीमितमध्यमकम फाइलों की तेज़ कॉपी
SFTPउच्चक्लाइंट पर निर्भरमध्यममैनुअल फाइल मैनेजमेंट
FTPकमक्लाइंट पर निर्भरअस्थिरजहाँ सुरक्षा जरूरी न हो, पुराने सिस्टम

जैसा कि टेबल में दिखता है, rsync खासकर दोहराए जाने वाले सिंक्रोनाइज़ेशन और बड़े डेटा ट्रांसफर में सबसे उपयुक्त है। scp सरल है लेकिन बदले हुए फाइलों को समझने में rsync जितना स्मार्ट नहीं। FTP बिना एन्क्रिप्शन के आजकल सुरक्षित नहीं माना जाता। होस्टिंग पैनल में FTP आसान होता है, लेकिन क्रिटिकल ट्रांसफर में SSH बेस्ड टूल्स बेहतर हैं।

लाइव वेबसाइट माइग्रेशन का उदाहरण

वेबसाइट माइग्रेट करते समय सिर्फ फाइल कॉपी करना ही मकसद नहीं होता। DNS, डेटाबेस, SSL, PHP वर्जन, फाइल परमिशन और ईमेल सेटिंग्स भी चेक करनी होती हैं। नीचे एक बड़े फाइल वाली वेबसाइट के लिए कम डाउनटाइम वाला वर्कफ़्लो दिया गया है।

  • नए सर्वर पर वेब सर्वर, PHP, डेटाबेस और ज़रूरी मॉड्यूल्स सेटअप करें।
  • DNS TTL वैल्यू माइग्रेशन से पहले 300 सेकंड जैसे कम रखें। डोमेन मैनेजमेंट के लिए डोमेन जांच और डोमेन प्रबंधन देखें।
  • पहला rsync ट्रांसफर साइट चालू रहते हुए शुरू करें, जो अधिकतर डेटा ट्रांसफर करता है।
  • डेटाबेस बैकअप लें और नए सर्वर पर ट्रांसफर करें।
  • साइट को शॉर्ट मेंटेनेंस मोड में डालें।
  • दूसरा rsync कमांड चलाएं ताकि आखिरी बदलाव भेजे जा सकें।
  • डेटाबेस को अपडेट करें या इंक्रीमेंटल बैकअप लें।
  • नए सर्वर पर फाइल परमिशन, साइट लॉन्च और लॉग्स चेक करें।
  • SSL सर्टिफिकेट लगाएं या रिन्यू करें, इसके लिए SSL प्रमाणपत्र स्थापना मददगार होगा।
  • DNS रिकार्ड्स को नए IP पर पॉइंट करें।

इस प्रक्रिया में सबसे लंबा ट्रांसफर लाइव साइट पर होता है, डाउनटाइम आखिरी सिंक और DNS अपडेट के दौरान ही होता है। बड़े मीडिया वाली WordPress साइट्स में इससे घंटों का डाउनटाइम मिनटों में आ जाता है।

डेटा इंटीग्रिटी कैसे चेक करें

ट्रांसफर खत्म होने पर सिर्फ कमांड का पूरा होना ही काफी नहीं, फाइल काउंट, साइज़ और क्रिटिकल फाइल्स चेक करनी चाहिए। बेसिक चेक के लिए du -sh से दोनों साइड की डायरेक्टरी साइज़ मिलान कर सकते हैं, हालांकि फाइल सिस्टम ब्लॉक के कारण थोड़ी भिन्नता हो सकती है। डिटेल चेक के लिए rsync को फिर से उसी पैरामीटर के साथ चलाएं; अगर ट्रांसफर के लिए फाइल नहीं बची तो आउटपुट बहुत कम होगा।

चेकसम वेरिफिकेशन के लिए rsync -avc --dry-run /source/path/ user@target-ip:/target/path/ का उपयोग करें। -c फाइलों को टाइमस्टैम्प और साइज़ से परे चेकसम से भी मिलाता है। बड़े डेटा पर CPU और डिस्क लोड बढ़ता है इसलिए ध्यान से इस्तेमाल करें। क्रिटिकल आर्काइव, डेटाबेस डंप या कस्टमर डॉक्यूमेंट के लिए यह अतिरिक्त सुरक्षा देता है।

अगर वेबसाइट ट्रांसफर कर रहे हैं तो एप्लिकेशन लेवल पर भी जांच करें। होमपेज, एडमिन पैनल, इमेज अपलोड, पेमेंट पेज और एरर लॉग्स की समीक्षा जरूरी है। ई-कॉमर्स साइट के लिए सिर्फ फाइल ट्रांसफर से काम नहीं चलता, पेमेंट इंटीग्रेशन और क्रॉन जॉब्स को भी नए सर्वर पर टेस्ट करें।

आम गलतियां और उनके समाधान

Permission denied error

यह आमतौर पर SSH यूजर की परमिशन, लक्ष्य फोल्डर की लिखने की अनुमति या की ऑथेंटिकेशन की वजह से होता है। पहले उसी यूजर से SSH कनेक्शन टेस्ट करें। अगर कनेक्शन सही है तो लक्ष्य फोल्डर में फाइल क्रिएट करने की कोशिश करें। जरूरत पड़ने पर chown से फोल्डर की ओनरशिप सही करें या sudo आधारित स्ट्रेटेजी अपनाएं।

No space left on device error

अगर लक्ष्य सर्वर में डिस्क स्पेस खत्म हो जाती है तो ट्रांसफर रुक जाता है। df -h से डिस्क पार्टिशन चेक करें। कभी-कभी मेन डिस्क खाली होता है लेकिन /tmp या माउंटेड फोल्डर भरा होता है। बड़े ट्रांसफर से पहले पुराने लॉग, कैश फोल्डर या पुराने बैकअप क्लीन करें। स्थायी समाधान के लिए डिस्क बढ़ाना या बड़े VPS प्लान पर जाना बेहतर है।

Connection reset या Broken pipe error

लंबे ट्रांसफर में नेटवर्क कट सकता है। यदि --partial और --append-verify पैरामीटर उपयोग कर रहे हैं तो कमांड को दोबारा रन करके बीच से जारी कर सकते हैं। SSH keepalive सेटिंग्स भी मदद कर सकती हैं। क्लाइंट साइड पर ServerAliveInterval 60 जैसे सेटिंग से कनेक्शन बिना उपयोग के टूटने से बचता है।

बहुत धीमा ट्रांसफर

धीमी गति फाइलों की संख्या, डिस्क I/O लिमिट, कम्प्रेशन लोड या नेटवर्क कैपेसिटी की वजह से हो सकती है। बहुत सारी छोटी फाइल्स के लिए पहले tar आर्काइव बनाना तेज़ हो सकता है, हालांकि इस केस में rsync की डेल्टा ट्रांसफर की खासियत कम हो जाती है। बड़े और पहले से कम्प्रेस्ड फाइल्स में -z हटा कर टेस्ट करें। iotop, htop, iftop जैसे टूल्स से CPU, डिस्क और नेटवर्क की बॉटलनेक पहचानें।

सुरक्षा के लिए बेहतरीन प्रैक्टिस

सर्वर के बीच फाइल ट्रांसफर में सुरक्षा को नजरअंदाज नहीं करना चाहिए। खासकर root एक्सेस, SSH कीज और बैकअप फाइल्स को संवेदनशील मानें। पासवर्ड के बजाय SSH की बेस्ड लॉगिन करें। की फाइल्स के परमिशन सख्त रखें, प्राइवेट की शेयर न करें और संभव हो तो पासफ्रेज़ लगाएं।

ट्रांसफर के लिए एक अस्थायी यूजर बनाएं जिसे केवल जरूरी फोल्डर एक्सेस हो। काम खत्म होने पर इस यूजर के परमिशन हटा दें या अकाउंट डिसेबल कर दें। SSH एक्सेस को केवल विश्वसनीय IP तक सीमित करें। फायरवॉल रूल्स, Fail2ban और अपडेटेड OpenSSH वर्जन लगाना ज़रूरी है।

डेटाबेस डंप, कस्टमर डॉक्यूमेंट या पर्सनल डेटा वाले आर्काइव ट्रांसफर के बाद अस्थायी फाइल्स साफ़ करें। वेब रूट के नीचे .sql, .zip या .tar फाइल रखना सुरक्षा जोखिम बढ़ाता है। इन्हें वेब एक्सेस से बाहर रखें या ट्रांसफर खत्म होते ही हटा दें।

ऑटोमेटिक बैकअप के लिए rsync का इस्तेमाल

rsync सिर्फ एक बार के ट्रांसफर के लिए नहीं, रेगुलर बैकअप के लिए भी उपयुक्त है। उदाहरण के लिए, हर रात किसी फोल्डर को बैकअप सर्वर पर भेजने के लिए cron जॉब लगाई जा सकती है। इसमें SSH की के जरिए पासवर्ड रहित सेफ कनेक्शन होता है, rsync केवल बदले हुए फाइल ट्रांसफर करता है और बैंडविड्थ लिमिट भी सेट कर सकते हैं।

उदाहरण कमांड: rsync -a --delete --bwlimit=30000 /var/www/site/ backup@backup-ip:/backup/site/। यह लक्ष्य फोल्डर को स्रोत के समान कर देता है। पर --delete के कारण सावधानी बरतनी चाहिए क्योंकि गलती से स्रोत से हटाई गई फाइल लक्ष्य से भी हट जाएगी। इसलिए क्रिटिकल बैकअप में स्नैपशॉट, वर्जनिंग या जर्नलिंग सपोर्ट वाले टूल्स बेहतर होते हैं।

होस्टिंग में 3-2-1 बैकअप नियम मानना अच्छा है: कम से कम 3 कॉपी, 2 अलग-अलग मीडिया में और 1 कॉपी अलग लोकेशन पर रखें। rsync इस स्ट्रेटेजी का सर्वर-टू-सर्वर कॉपी हिस्सा आसान बनाता है। अधिक जानकारी के लिए बैकअप समाधान और कॉर्पोरेट होस्टिंग सेवाएँ देखें।

फाइनल चेकलिस्ट

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

  • स्रोत और लक्ष्य सर्वर पर rsync इंस्टॉल है?
  • SSH कनेक्शन सही यूजर और पोर्ट से टेस्ट किया?
  • लक्ष्य सर्वर में पर्याप्त डिस्क स्पेस है?
  • पहली बार --dry-run से ऑपरेशन जांचा?
  • लाइव साइट के लिए मेंटेनेंस मोड और अंतिम सिंक प्लान किया?
  • अगर --delete इस्तेमाल करना है तो लक्ष्य पाथ सही है?
  • ट्रांसफर के बाद फाइल साइज़, परमिशन और एप्लिकेशन टेस्ट होंगे?
  • अस्थायी बैकअप और डंप फाइल्स सुरक्षित तरीके से हटाए जाएंगे?

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

अक्सर पूछे जाने वाले सवाल

अगर SSH rsync कनेक्शन कट जाए तो ट्रांसफर फिर से शुरू होगा या शुरुआत से?

नहीं, सही पैरामीटर के साथ ट्रांसफर बीच से जारी रहता है। --partial और --append-verify विकल्प आंशिक फाइल्स को बचाते हैं और दोबारा शुरू होने पर कनेक्शन कटने के बाद वहीं से ट्रांसफर चालू करते हैं। फिर भी बड़े ट्रांसफर में दोबारा शुरू करने से पहले लक्ष्य सर्वर की डिस्क स्पेस और आंशिक फाइल स्थिति चेक करना अच्छा रहता है।

क्या rsync से सीधे डेटाबेस ट्रांसफर किया जा सकता है?

rsync फाइल ट्रांसफर करता है; लाइव डेटाबेस फाइल को सीधे ट्रांसफर करना सुरक्षित नहीं है। MySQL या MariaDB के लिए mysqldump या फिजिकल बैकअप टूल्स का इस्तेमाल करें, फिर बने बैकअप को rsync से लक्ष्य सर्वर पर भेजें। लाइव सिस्टम में डेटा कंसिस्टेंसी के लिए मेंटेनेंस मोड या रेप्लिकेशन स्ट्रेटेजी जरूरी होती है।

क्या rsync उपयोग के लिए दोनों सर्वरों पर root एक्सेस चाहिए?

जरूरी नहीं। लक्ष्य फोल्डर में लिखने वाला कोई भी यूजर पर्याप्त होता है। लेकिन फाइल ओनरशिप, सिस्टम डायरेक्टरी, ACL या खास परमिशन बनाए रखने के लिए एडमिन या root एक्सेस की जरूरत पड़ सकती है। सुरक्षा के लिहाज से सीमित परमिशन वाले यूजर से काम करना बेहतर होता है।

क्या --delete पैरामीटर सुरक्षित है?

--delete अगर सही पाथ पर इस्तेमाल किया जाए तो लक्ष्य को स्रोत के साथ सिंक करने में बहुत मददगार होता है, लेकिन गलत पाथ पर इसका उपयोग भारी डेटा लॉस कर सकता है। इसलिए --delete वाले कमांड को पहले --dry-run से टेस्ट करना जरूरी है और स्रोत तथा लक्ष्य पाथ्स को अच्छी तरह जांचें।

बड़े फाइल ट्रांसफर में rsync बेहतर है या scp?

छोटे या एक बार के ट्रांसफर में scp ठीक है, लेकिन बड़े फाइल, हजारों फाइल और बार-बार सिंक के लिए rsync बेहतर रहता है। क्योंकि यह केवल बदले हुए हिस्से ट्रांसफर करता है, बीच में रुके ट्रांसफर को जारी रख सकता है, बैंडविड्थ लिमिट कर सकता है और टेस्टिंग मोड भी देता है।

सारांश और अगला कदम

SSH के जरिए rsync कमांड से दो सर्वरों के बीच बड़े फाइल तेज़, सुरक्षित और मैनेज करने योग्य तरीके से ट्रांसफर किए जा सकते हैं। सही पैरामीटर से कनेक्शन ड्रॉप होने पर भी ट्रांसफर जारी रहता है, केवल बदले हुए फाइल ट्रांसफर होते हैं जिससे समय बचता है और लाइव साइट के माइग्रेशन में डाउनटाइम कम होता है। सबसे पहले SSH और डिस्क स्पेस चेक करें, --dry-run से टेस्ट करें और फिर प्लानिंग के साथ मेन ट्रांसफर करें।

अगर आप नया सर्वर, हाई कैपेसिटी स्टोरेज या बेहतर परफॉर्मेंस वाला होस्टिंग इंफ्रास्ट्रक्चर लेना चाहते हैं तो Hostragons के समाधान देख सकते हैं; VPS, होस्टिंग, डोमेन और SSL विकल्पों के साथ आपका माइग्रेशन सुरक्षित और आसान होगा। छोटे टेस्ट से शुरुआत करें, मापें और अंतिम सिंक प्लान के अनुसार करें ताकि बिना रुकावट के माइग्रेशन हो सके।

इस लेख को साझा करें:

Hostragons टीम

हमारी विशेषज्ञ टीम द्वारा होस्टिंग, सर्वर और डोमेन नामों पर नवीनतम गाइड उपलब्ध हैं। आइए मिलकर आपके प्रोजेक्ट के लिए सही समाधान खोजें।

हमसे संपर्क करें