ऐसा अनुभव किसने नहीं किया होगा: आपको किसी सस्ते शेयर्ड होस्टिंग पैकेज (जैसे कि 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 जैसी लाइब्रेरी बिल्कुल इसी परिदृश्य के लिए मौजूद हैं। लाइब्रेरी रिमोट सर्वर पर शेल कमांड निष्पादित करना संभव बनाती है जो केवल (एस) एफ़टीपी और 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
स्क्रिप्ट पृष्ठभूमि में एक कार्यकर्ता को अपलोड करती है, सर्वर पर स्थानीय रूप से कमांड चलाती है (जहां यह तेज़ है) और परिणाम लौटाती है। यह परिनियोजन, डेटाबेस डंप या Git संचालन को सीमित होस्टिंग वातावरण पर भी कुशलतापूर्वक स्वचालित करने की अनुमति देता है। उदाहरण के लिए, यह डेटाबेस को सिंक्रनाइज़ करने के लिए सिंकडीबी के साथ भी पूरी तरह से काम करता है।