Tutti gli articoli

Modificare un file su un server SFTP dal Mac senza ricaricarlo

· 7 min di lettura

In breve: non serve scaricare un file dal server, modificarlo e ricaricarlo a mano. In Folia Files, collegati una volta al server via SFTP, poi fai doppio clic sul file nella cartella del server. Si apre nella tua solita app da una copia sul Mac e, a ogni salvataggio, Folia Files lo rimanda al server, dopo aver controllato che nel frattempo nessuno l’abbia modificato lì. Gli invii si seguono in Operazioni › File remoti.

Ecco come configurarlo, che cosa vedi mentre lavori e che cosa succede quando il server si rifiuta.

Perché modificare un file sul server è una seccatura

Con un client SFTP la routine è sempre in tre passaggi: scaricare config.php o index.html, modificarlo, ricaricarlo. Se dimentichi l’ultimo, il server continua a usare la versione vecchia. Se lo fai da due Mac, sovrascrivi senza accorgertene la modifica di qualcun altro.

Montare il server come un disco sembra più semplice, perché l’editor può aprire il file direttamente. Ma le app salvano male direttamente su un disco di rete: molte scrivono un file temporaneo e lo mettono al posto dell’originale, lasciano file di blocco o aspettano ogni andata e ritorno con un server lento. Il risultato può essere un file che perde proprietario e permessi, o un editor che si blocca durante il salvataggio.

L’ideale è avere entrambe le cose: un file locale con cui l’editor lavora bene e una copia sul server che segue ogni salvataggio.

Passo 1: collegarsi al server via SFTP

Nell’edizione del sito di Folia Files, le connessioni SFTP passano per rclone, uno strumento gratuito e open source. Installalo una volta nel Terminale con brew install rclone (se manca, la finestra delle connessioni offre un pulsante per farlo). Poi:

  1. Scegli Strumenti › Connessioni (server e cloud)… (⌘K), fai clic su Nuova connessione e scegli SFTP / SCP (SSH).
  2. Inserisci l’indirizzo del server, il tuo nome utente e una password o la tua chiave SSH (lascia vuota la password per usare la chiave o l’agente SSH).
  3. In Cartella iniziale, scrivi la cartella in cui lavori di solito, per esempio /var/www. Folia Files monta tutto il server a partire dalla radice: puoi risalire ovunque; la cartella iniziale è semplicemente quella che si apre.
  4. Fai clic su Verifica connessione, poi su Monta. Il server compare nella sezione Server della barra laterale.

La finestra delle connessioni con una connessione SFTP a vps.alex.dev, non ancora montata, con il suo utente e la cartella iniziale /var/www

Lascia disattivata Sola lettura nelle opzioni della connessione se vuoi modificare i file: su una connessione in sola lettura i file si aprono così come sono, senza nulla da rimandare. Per saperne di più su rclone, chiavi SSH e S3, leggi come collegarsi a SFTP e S3 sul Mac senza macFUSE.

Passo 2: aprire il file e modificarlo

Sfoglia il server in un riquadro come qualsiasi cartella, poi:

  • fai doppio clic sul file per aprirlo nella sua app predefinita, oppure
  • fai clic destro e scegli Apri con per usare un’altra app: TextEdit, BBEdit, Visual Studio Code, Nova o l’editor che preferisci.

Folia Files scarica una copia di lavoro sul Mac e la apre. Un avviso te lo segnala: «“index.html” si apre da una copia su questo Mac», e aggiunge che ogni salvataggio viene rimandato al tuo server e si può seguire in Operazioni. Se il download richiede più di un secondo, vedi prima «Apertura di “index.html”…» con il nome del server.

Ora modifica e salva come al solito con ⌘S. Circa un secondo dopo che l’app ha finito di scrivere, Folia Files invia il file. Mostra Salvato sul server solo quando il server ha davvero il nuovo contenuto: con SFTP lo chiede direttamente al server invece di fidarsi del montaggio.

Alcuni dettagli che contano su un server web:

  • I permessi non cambiano. Il file viene riscritto sul posto, quindi conserva proprietario e permessi sul server invece di ricevere quelli predefiniti di un file nuovo.
  • Una copia per file. Riaprendo lo stesso file si riapre la stessa copia di lavoro, con quello che non è ancora stato inviato.
  • Solo documenti. I file fino a 200 MB passano per una copia. Video, archivi, immagini disco e app si aprono direttamente dal server.

Questo comportamento è attivo per impostazione predefinita. L’opzione si trova in Impostazioni › File e rete: «Modifica i documenti di un server da una copia su questo Mac, rimandata a ogni salvataggio». Se la disattivi, i file si aprono direttamente dal server e puoi comunque fare clic destro su un file e scegliere Modifica e rimanda al server.

Impostazioni di Folia Files, pagina File e rete: l’opzione per modificare i documenti di un server da una copia sul Mac

Non vale solo per SFTP: lo stesso accade per i file delle tue altre connessioni e di qualsiasi volume di rete montato sul Mac, come una condivisione SMB o un server WebDAV.

Passo 3: seguire gli invii in Operazioni › File remoti

Fai clic su Operazioni nella barra degli strumenti (le due frecce) oppure scegli Finestra › Operazioni in corso (⌃⌘O). Finché hai file di un server aperti, le pagine Tutto e In corso mostrano una sezione File remoti, con una riga per file:

  • il nome del file e, sotto, la connessione e il percorso del file sul server;
  • il suo stato: Aggiornato, Inviato alle una certa ora, Invio…, Modifiche non ancora inviate, Modificato sul server nel frattempo oppure l’errore che ha fermato l’ultimo invio;
  • tre pulsanti: Rimanda al server, Mostra la copia su questo Mac e Termina (elimina la copia su questo Mac).

Termina un file quando hai finito. Se il server non ha la tua ultima versione, Folia Files lo chiede prima: «Terminare senza inviare le ultime modifiche?». Le copie aggiornate e ferme da una settimana vengono tolte da sole.

Quando il server dice di no

Il server rifiuta di scrivere il file

È il caso tipico di un file di configurazione che appartiene a un altro utente, come un php.ini di root mentre ti colleghi come alex. rclone risponde con un laconico «permission denied»; Folia Files lo spiega in parole chiare, nell’avviso e in File remoti:

Il server rifiuta di scrivere questo file: l’utente della connessione non ha il permesso di modificarlo (proprietario o permessi del file sul server).

La modifica non va persa: resta sul Mac e l’avviso offre Riprova. Per risolvere, cambia proprietario o permessi del file sul server, oppure collegati con un utente che ha il permesso di scriverlo, poi rimandalo. Lo stesso vale per «Il server non ha più spazio per questo file.». Se il server non conferma mai la ricezione, leggi «Il server non ha confermato la ricezione del file. La modifica rimane su questo Mac.».

Se la connessione cade a metà di un invio, la versione che il server aveva prima viene conservata sul Mac, e il pulsante Mostra dell’avviso ti porta lì.

Qualcuno ha modificato il file sul server

Prima di ogni invio, Folia Files confronta il file sul server con quello che hai aperto. Se è cambiato (un collega, uno script di deploy, un altro editor), non viene sovrascritto nulla. Un avviso segnala «“index.html” è cambiato sul server» e propone:

  • Sostituisci la versione del server: la tua versione va sul server; se Folia Files non ha visto che cosa c’è lì, ne conserva prima una copia sul Mac;
  • Mantieni entrambi: la tua versione viene salvata accanto con il nome «index (mia versione).html», e i salvataggi successivi vanno in quel file.

Il server non è connesso

Se salvi mentre la connessione è interrotta, l’avviso dice che il server non è connesso e che la modifica viene mantenuta sul Mac. Fai clic su Connettiti e invia per montarlo di nuovo e inviare. Il registro della connessione (clic destro sul server nella barra laterale › Registro della connessione) elenca ogni file inviato e ogni errore, utile quando un problema si ripete. Se i dischi di rete tendono a bloccare il Mac, questo articolo spiega perché il Finder si blocca su un’unità di rete.

Uscire con modifiche che non sono sul server

Tieni Folia Files aperto mentre modifichi: è lui che invia ogni salvataggio. Se esci quando una modifica non è ancora arrivata sul server, chiede:

Alcune modifiche ai file remoti non sono sul server. Restano su questo Mac: Folia Files te le proporrà al prossimo avvio (Operazioni › File remoti).

Fai clic su Annulla per restare e inviarle, oppure su Esci: al prossimo avvio il file mostra «Modifiche non ancora inviate» in File remoti, e il pulsante con la freccia lo invia. Una modifica rimasta in sospeso da una sessione precedente e non più salvata da allora, come un file che il server continua a rifiutare, non fa ripetere la domanda a ogni uscita: aspetta in File remoti finché non la invii o non la termini.

Edizione del sito ed edizione Mac App Store

Tutto quanto sopra descrive l’edizione del sito, dove SFTP funziona non appena rclone è installato. La modifica tramite una copia c’è in entrambe le edizioni, anche per le condivisioni SMB e WebDAV. Nell’edizione Mac App Store, le connessioni SFTP richiedono Folia Files Companion, una piccola app gratuita, perché la sandbox di Apple non consente a un’app di avviare rclone.

Per saperne di più su connessioni, cloud e modifica sul posto, vedi la pagina server e cloud.