من منا لم يمر بهذا الموقف: تحتاج إلى تنزيل شيء ما بسرعة على باقة استضافة مشتركة رخيصة (على سبيل المثال، من 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 خصيصًا لهذا الغرض. تتيح لك هذه المكتبة تنفيذ أوامر سطر الأوامر على خادم بعيد لا يوفر سوى الوصول عبر بروتوكولي (SFTP) وHTTP. يكمن السر في تحميل سكربت PHP مؤقتًا، يقوم بتنفيذ الأوامر المطلوبة وإرجاع الناتج. كل هذا يحدث في الخلفية، لكنه يُعطي إحساسًا باستخدام سطر أوامر حقيقي.
عملية التثبيت سريعة وسهلة.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
بعد ذلك، نقوم بإنشاء ملف .env يحتوي على بيانات الوصول (S)FTP.:
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 بكفاءة عالية، حتى في بيئات الاستضافة ذات الموارد المحدودة. كما يتكامل بسلاسة مع syncdb لمزامنة قواعد البيانات.