Cui nu i s-a întâmplat asta: Trebuie să descarci rapid ceva de pe un pachet de găzduire partajată ieftin (de exemplu, de la IONOS). git pull Poate doriți să rulați un program sau să utilizați o bază de date, dar furnizorul dvs. de găzduire nu vă acordă acces SSH – sau doar în cazul planurilor mai scumpe. Adesea, singura opțiune rămasă este procesul plictisitor de încărcare manuală a fișierelor prin FTP, ceea ce face ca implementările să fie inutil de complicate și predispuse la erori.
O posibilă soluție este montarea sistemului de fișiere prin sshfs. În teorie, asta sună bine: montezi folderul la distanță local și lucrezi ca și cum fișierele ar fi pe propria mașină. Pentru a face acest lucru, pur și simplu creezi un director local și îl conectezi la server prin intermediul utilizatorului FTP/SSH. Comenzile necesare pentru a stabili conexiunea și a pregăti Git pentru acest folder arată astfel în 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
Problema: Performanța este deplorabilă. Deoarece Git se chinuie cu comenzi precum git status Atunci când se efectuează mii de operațiuni cu fișiere mici, fiecare necesitând acces la rețea, se așteaptă adesea minute întregi chiar și pentru cele mai simple răspunsuri. Munca productivă este practic imposibilă în aceste circumstanțe. Mai ales în proiectele cu numeroase dependențe, terminalul se blochează frecvent complet, forțând utilizatorii frustrați să abandoneze procesul.
Biblioteci precum ftpsh există exact pentru acest scenariu. Această bibliotecă vă permite să executați comenzi shell pe un server la distanță care oferă doar acces (S)FTP și HTTP. Trucul este că se încarcă temporar un script PHP, care execută comenzile date și returnează rezultatul. Totul se întâmplă în fundal, dar se simte ca un shell real.
Instalarea este rapidă și ușoară.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
Apoi, creăm un fișier .env cu datele de acces (S)FTP.:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
Acum putem executa orice comandă pe server, cu condiția ca instrumentele să fie disponibile de la distanță.:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
Scriptul încarcă un worker în fundal, execută comanda local pe server (unde este rapid) și returnează rezultatul. Acest lucru permite automatizarea eficientă a implementărilor, a dump-urilor bazei de date sau a operațiunilor Git, chiar și în medii de găzduire limitate. De asemenea, se integrează perfect cu syncdb pentru sincronizarea bazelor de date.