Esiste un client FTP o simile a FTP che consente i "caricamenti delta", ovvero solo il caricamento delle parti di un file che sono state modificate?


9

Apporto spesso piccole modifiche a file di testo abbastanza grandi tramite FTP ( file CSS per lo sviluppo Web ) e poiché la mia connessione Internet è terribilmente lenta, è un processo molto doloroso.

Anche se cambio solo un carattere del file, devo comunque sedermi e attendere un tempo considerevole mentre l'intero file viene ricaricato sul server.

Esiste un modo per modificare i file ospitati in remoto sul mio computer locale e quando salvo il file, caricare solo le parti del file che sono state modificate ?

Modifica: penso di non essere chiaro su come sto usando il mio client FTP al momento. Fondamentalmente, apro un file remoto su SFTP usando WinSCP. WinSCP lo salva in una cartella tmp, avvia Sublime Text e inizio a modificarlo. Quando premo save, WinSCP carica nuovamente il file automaticamente. In realtà non sto mai salvando il file in modo permanente sul mio computer - tutto viene fatto tramite la cartella temporanea di WinSCP. Ecco perché sto cercando una soluzione che possa essere utilizzata in questo modo "hit and run".


Discussione precedente

In precedenza avevo pubblicato questa domanda su ServerFault in cui era stato suggerito l'utilizzo di qualcosa come git, tuttavia, come ho spiegato:

Con git o uno strumento di versioning simile dovrei fare un commit ogni volta che salvo il file, giusto? Anche se ciò potesse essere fatto automaticamente (cioè se avessi una macro che faceva Ctrl-S in Sublime Text salvando il file ed eseguendo un git push allo stesso tempo), potrei fare 50-100 piccole modifiche di un file CSS all'ora; sicuramente finirei con un log di commit spammato? Inoltre, la soluzione git non è flessibile in quanto si basa su qualsiasi file che sto modificando come parte di un repository git.

L'unica soluzione che mi viene in mente finora è una sorta di processo hackerato che utilizza rsync ma anche in questo caso, è molto complicato:

  1. Scarica i file necessari sul mio computer (tramite FTP / rsync / qualunque cosa).
  2. Apro un file in (ad es.) Sublime Text e inizio a fare modifiche.
  3. Un processo in background sta monitorando la cartella per le modifiche ai file. Quando salvo un file, tale processo avvia immediatamente un'operazione rsync dal mio computer al server, trasferendo le parti modificate del file.

Tuttavia, avrei bisogno di impostare o specificare manualmente i file remoti o i percorsi delle directory, altrimenti lo script rsync locale non saprà dove risincronizzare i file, quindi questo metodo è ancora piuttosto poco flessibile. Questo metodo non mi permette di navigare all'istante in un file casuale, aprirlo e salvarlo come fa un client FTP.

Inoltre, con questo metodo non è disponibile alcun feedback visibile come una barra di avanzamento del caricamento.


7
Usare git è davvero la risposta giusta. Quello che stai cercando qui è una soluzione alternativa per la cattiva pratica. E se fai qualcosa di sbagliato e rompi le cose? Git ti dà i rollback.
TRiG

1
Non sono d'accordo. Cosa succede se si desidera semplicemente modificare una singola riga di un file di testo di grandi dimensioni che non fa parte di un repository? Cosa succede se la tua organizzazione non consente o supporta git? Il mio caso d'uso è che sto facendo centinaia di minuscole modifiche ai file che sono ospitati in remoto e che devono essere modificati "live" e "sul posto".
Wack

Non ho tempo di testare su un file di grandi dimensioni in questo momento, quindi pubblicarlo come un commento, non una risposta, ma guarda oltre Beyond Compare: è un file diff GUI multipiattaforma che può modificare su FTP / SFTP e puoi scegli quali linee sincronizzare. Probabilmente non è ancora l'ideale, ma praticabile. Hanno anche una prova gratuita.
Nick,

Risposte:


7

Vim ha un plug-in integrato chiamato netrw, che consente a Vim di modificare i file remoti. Rsync è uno dei protocolli che può usare:

:e rsync://user@hostname:port/path
:w rsync://user@hostname:port/path

Naturalmente, se si dispone dell'accesso SSH al computer remoto e Vim è installato su di esso, potrebbe essere più semplice utilizzare Vim in remoto. Nano, Emacs e altri editor con interfacce da riga di comando sono anche opzioni in questo caso. A seconda di quanto sia grave la tua connessione, tuttavia, questa potrebbe non essere un'opzione piacevole.


Detto questo,

apportando centinaia di minuscole modifiche ai file che sono ospitati in remoto e che devono essere modificati "live" e "sul posto"

senza un sistema di rollback affidabile come quello che git può fornire tu e la tua organizzazione chiedete solo agonia quando commettete gli inevitabili errori che potrebbero benissimo passare inosservati fino a quando non dimenticherete esattamente quello che avete fatto.


SSH sembra essere la risposta ovvia se il server esegue una versione di Linux. Se non è già in esecuzione sul server, premerei l'amministratore del server per configurarlo.
Charles Burge,

Grazie ad entrambi; Ho accesso completo a SSH e posso configurare tutto ciò che è necessario sul server. Non riesco a usare Vim da remoto perché la latenza è spesso molto alta. Inoltre mi piacerebbe poter usare editor desktop come Sublime. Penso di non essere chiaro su come sto usando il mio client FTP al momento - fondamentalmente, apro un file remoto usando WinSCP, inizio a modificarlo e quando premo Salva, WinSCP carica nuovamente il file automaticamente. In realtà non lo sto scaricando in nessuna directory permanente sul mio computer - tutto è fatto tramite la cartella temporanea di WinSCP. Modificherò la mia domanda e chiarirò.
Wack

@WackGet Vim funziona anche sul desktop, si chiama GVim. Cream è una particolare configurazione di Vim che dovrebbe essere relativamente facile per coloro che sono più abituati a editor come Sublime, Notepad o Textmate. Quello che stai facendo con WinSCP è essenzialmente come funziona netrw. Si scarica in una posizione temporanea, attende il salvataggio, quindi lo riscrive sul server remoto, utilizzando qualsiasi protocollo specificato.
8bittree,

@ 8bittree Grazie, questo sarà sicuramente utile. Non segnerò questo come risposta alla mia domanda originale perché ti limita a usare il plugin basato su Vim. Se qualcuno potesse implementare trasferimenti delta simili a netrw in un client FTP o FTP, allora sarebbe perfetto. Attualmente non l'ho ancora trovato, ma spero che esista.
Wack

1

Beyond Compare è uno strumento diff che può confrontare e unire cartelle e file; Anche i server FTP sono supportati e possono essere gestiti come una cartella locale. È proprietario, una licenza a vita per un'installazione costa 30 USD per l'edizione standard (con FTP) o 60 USD per l'edizione professionale (con SFTP). Funziona su Windows, Mac OS e Linux. Personalmente sviluppo il mio sito Web sul mio computer di casa e carico le modifiche sul mio server Web quando sono contento. Analizzo manualmente le modifiche con Beyond Compare ma anche questo può essere automatizzato. Potresti provarlo e vedere se carica solo file completi o pezzi di modifiche; Non ne sono sicuro.


Oltre a confrontare è fantastico - perfetto se non si dispone dell'accesso SSH, ma è comunque necessario assicurarsi che i file siano sincronizzati su un server remoto (è supportato FTP su SSL)
Sam Heuck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.