Każdemu z nas to się kiedyś zdarzyło: trzeba szybko pobrać coś z taniego pakietu hostingu współdzielonego (np. z IONOS). git pull Możesz chcieć uruchomić program lub skorzystać z bazy danych, ale Twój dostawca hostingu nie zapewnia dostępu SSH – lub oferuje go tylko w droższych planach. Często jedyną opcją pozostaje żmudny proces ręcznego przesyłania plików przez FTP, co niepotrzebnie komplikuje wdrożenia i zwiększa ryzyko błędów.
Jednym z możliwych obejść jest zamontowanie systemu plików za pomocą sshfs. Teoretycznie brzmi to dobrze: montujesz folder zdalny lokalnie i pracujesz tak, jakby pliki znajdowały się na Twoim komputerze. Aby to zrobić, po prostu tworzysz katalog lokalny i łączysz go z serwerem za pośrednictwem użytkownika FTP/SSH. Polecenia niezbędne do nawiązania połączenia i przygotowania Gita dla tego folderu w systemie Linux wyglądają następująco::
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
Problem: Wydajność jest fatalna. Ponieważ Git ma problemy z poleceniami takimi jak git status Podczas wykonywania tysięcy małych operacji na plikach, z których każda wymaga dostępu do sieci, często czeka się minuty na nawet najprostsze odpowiedzi. W takich okolicznościach produktywna praca jest praktycznie niemożliwa. Szczególnie w projektach z licznymi zależnościami, terminal często całkowicie się zawiesza, zmuszając sfrustrowanych użytkowników do przerwania procesu.
Biblioteki takie jak ftpsh istnieją dokładnie dla tego scenariusza. Biblioteka umożliwia wykonywanie poleceń powłoki na zdalnym serwerze, który oferuje jedynie dostęp (S)FTP i HTTP. Sztuczka: tymczasowo przesyłany jest skrypt PHP, który wykonuje podane polecenia i zwraca wynik. Wszystko to dzieje się w tle, ale sprawia wrażenie prawdziwej powłoki.
Instalacja jest szybka i łatwa.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
Następnie kładziemy .env z danymi dostępowymi (S)FTP do:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
Teraz możemy wykonywać dowolne polecenia na serwerze, pod warunkiem, że narzędzia są dostępne zdalnie.:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
Skrypt ładuje pracownika w tle, uruchamia polecenie lokalnie na serwerze (gdzie jest to szybkie) i zwraca wynik. Umożliwia to efektywną automatyzację wdrożeń, zrzutów baz danych lub operacji Git, nawet w ograniczonych środowiskach hostingowych. Na przykład doskonale współpracuje z syncdb do synchronizacji baz danych.