SSH के बिना Git

ऐसा अनुभव किसने नहीं किया होगा: आपको किसी सस्ते शेयर्ड होस्टिंग पैकेज (जैसे कि IONOS से) पर कुछ जल्दी से डाउनलोड करने की आवश्यकता होती है। git pull आप शायद कोई प्रोग्राम चलाना चाहें या डेटाबेस का उपयोग करना चाहें, लेकिन आपका होस्टिंग प्रदाता SSH एक्सेस प्रदान नहीं करता है - या केवल महंगे प्लान में ही यह सुविधा उपलब्ध है। अक्सर, एकमात्र विकल्प FTP के माध्यम से मैन्युअल रूप से फ़ाइलें अपलोड करने की थकाऊ प्रक्रिया ही बचती है, जिससे डिप्लॉयमेंट अनावश्यक रूप से जटिल हो जाता है और त्रुटियों की संभावना बढ़ जाती है।


एक संभावित समाधान फाइल सिस्टम को माउंट करना है। sshfs. सैद्धांतिक रूप से, यह अच्छा लगता है: आप रिमोट फ़ोल्डर को स्थानीय रूप से माउंट करते हैं और ऐसे काम करते हैं जैसे कि फ़ाइलें आपकी अपनी मशीन पर हों। ऐसा करने के लिए, आप बस एक स्थानीय डायरेक्टरी बनाते हैं और उसे FTP/SSH उपयोगकर्ता के माध्यम से सर्वर से कनेक्ट करते हैं। कनेक्शन स्थापित करने और इस फ़ोल्डर के लिए Git को तैयार करने के लिए आवश्यक कमांड Linux में इस प्रकार दिखते हैं::

sudo apt-get install sshfs
mkdir /var/www/remote
cd /var/www/remote
sshfs username@your.host:/ -p 22 /var/www/remote
git config --global --add safe.directory /var/www/remote
git status
...
umount /var/www/remote

समस्या: इसका प्रदर्शन बेहद खराब है। Git को कुछ खास तरह के कमांड्स के साथ काम करने में दिक्कत होती है। git status हजारों छोटी-छोटी फाइल संबंधी कार्रवाइयां करते समय, जिनमें से प्रत्येक के लिए नेटवर्क एक्सेस की आवश्यकता होती है, अक्सर सबसे सरल प्रतिक्रियाओं के लिए भी मिनटों तक इंतजार करना पड़ता है। ऐसी परिस्थितियों में उत्पादक कार्य करना लगभग असंभव है। विशेष रूप से कई निर्भरताओं वाली परियोजनाओं में, टर्मिनल अक्सर पूरी तरह से ठप हो जाता है, जिससे निराश उपयोगकर्ता प्रक्रिया को बीच में ही छोड़ने के लिए मजबूर हो जाते हैं।

ftpsh जैसी लाइब्रेरीज़ ठीक इसी तरह के परिदृश्य के लिए मौजूद हैं। यह लाइब्रेरी आपको ऐसे रिमोट सर्वर पर शेल कमांड चलाने की अनुमति देती है जो केवल (S)FTP और HTTP एक्सेस प्रदान करता है। इसमें खास बात यह है कि एक PHP स्क्रिप्ट अस्थायी रूप से अपलोड की जाती है, जो दिए गए कमांड को निष्पादित करती है और आउटपुट लौटाती है। यह सब बैकग्राउंड में होता है, लेकिन ऐसा लगता है जैसे आप असली शेल का इस्तेमाल कर रहे हों।

इसकी स्थापना त्वरित और आसान है।:

mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh

इसके बाद, हम (एसएफटीपी) एक्सेस डेटा के साथ एक .env फ़ाइल बनाते हैं।:

HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"

अब हम सर्वर पर कोई भी कमांड चला सकते हैं, बशर्ते कि उपकरण दूरस्थ रूप से उपलब्ध हों।:

ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql

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

वापस