Ci siamo passati tutti: abbiamo bisogno di scaricare velocemente qualcosa da un pacchetto di hosting condiviso economico (ad esempio da IONOS). git pull Potresti voler eseguire un programma o utilizzare un database, ma il tuo provider di hosting non concede l'accesso SSH, o lo concede solo nei piani più costosi. Spesso, l'unica opzione rimasta è il noioso processo di caricamento manuale dei file tramite FTP, che rende le distribuzioni inutilmente complicate e soggette a errori.
Una possibile soluzione alternativa è montare il file system tramite sshfs. In teoria, questo sembra un buon metodo: si monta la cartella remota localmente e si lavora come se i file fossero sulla propria macchina. Per farlo, è sufficiente creare una directory locale e connetterla al server tramite l'utente FTP/SSH. I comandi necessari per stabilire la connessione e preparare Git per questa cartella sono i seguenti su 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
Il problema: le prestazioni sono pessime. Poiché Git ha difficoltà con comandi come git status Quando si eseguono migliaia di piccole operazioni su file, ciascuna delle quali richiede l'accesso alla rete, spesso si attendono minuti anche per le risposte più semplici. Lavorare in modo produttivo è praticamente impossibile in queste circostanze. Soprattutto nei progetti con numerose dipendenze, il terminale si blocca spesso completamente, costringendo gli utenti frustrati ad abbandonare il processo.
Esistono librerie come ftpsh esattamente per questo scenario. La libreria consente di eseguire comandi shell su un server remoto che offre solo accesso (S)FTP e HTTP. Il trucco: viene caricato temporaneamente uno script PHP che esegue determinati comandi e restituisce l'output. Tutto questo accade in background, ma sembra un vero guscio.
L'installazione è semplice e veloce.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
Poi abbiamo steso un .env con i dati di accesso (S)FTP a:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
Ora possiamo eseguire qualsiasi comando sul server, a patto che gli strumenti siano disponibili in remoto.:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
Lo script carica un lavoratore in background, esegue il comando localmente sul server (dove è veloce) e restituisce il risultato. Ciò consente di automatizzare in modo efficiente distribuzioni, dump di database o operazioni Git, anche su ambienti di hosting limitati. Ad esempio, funziona perfettamente anche con syncdb per la sincronizzazione dei database.