Non ho alternative da raccomandare, ma posso fornire suggerimenti su come velocizzare sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Ciò dovrebbe evitare alcune delle richieste di andata e ritorno quando si tenta di leggere il contenuto o le autorizzazioni per i file già recuperati in precedenza nella sessione.
sshfs simula le eliminazioni e le modifiche localmente, quindi le nuove modifiche apportate sul computer locale dovrebbero apparire immediatamente, nonostante i grandi timeout, poiché i dati memorizzati nella cache vengono automaticamente eliminati.
Ma queste opzioni non sono consigliate se i file remoti potrebbero essere aggiornati senza che il computer locale lo sappia, ad esempio da un altro utente o una shell ssh remota. In tal caso, sarebbe preferibile un timeout inferiore.
Ecco alcune altre opzioni con cui ho sperimentato, anche se non sono sicuro che qualcuno di loro abbia fatto la differenza:
sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200 \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes \
-o no_remote_lock"
Dovresti anche dare un'occhiata alle opzioni raccomandate da Meetai nella sua risposta.
ricorsione
Il problema più grande nel mio flusso di lavoro è quando provo a leggere molte cartelle, ad esempio in un albero profondo, perché sshfs esegue una richiesta di andata e ritorno per ogni cartella separatamente. Questo potrebbe anche essere il collo di bottiglia che si verifica con Eclipse.
Fare richieste per più cartelle in parallelo potrebbe essere d'aiuto, ma la maggior parte delle app non lo fa: sono state progettate per filesystem a bassa latenza con memorizzazione nella cache read-ahead, quindi attendono il completamento di una statistica del file prima di passare alla successiva .
precaching
Ma qualcosa che sshfs potrebbe fare sarebbe guardare avanti al file system remoto, raccogliere le statistiche delle cartelle prima che io le richieda e inviarle a me quando la connessione non viene immediatamente occupata. Ciò richiederebbe una maggiore larghezza di banda (dai dati lookahead che non vengono mai utilizzati) ma potrebbe migliorare la velocità.
Possiamo forzare sshfs a fare un po 'di cache read-ahead, eseguendolo prima di iniziare l'attività, o anche in background quando l'attività è già in corso:
find project/folder/on/mounted/fs > /dev/null &
Ciò dovrebbe preconfigurare tutte le voci della directory, riducendo alcune delle spese generali successive da round trip. (Ovviamente, devi utilizzare i timeout di grandi dimensioni come quelli che ho fornito in precedenza, altrimenti questi dati memorizzati nella cache verranno cancellati prima che la tua app acceda ad essi.)
Ma find
ci vorrà molto tempo. Come altre app, attende i risultati da una cartella prima di richiedere quella successiva.
Potrebbe essere possibile ridurre il tempo complessivo chiedendo a più processi di ricerca di esaminare cartelle diverse. Non ho testato per vedere se questo è davvero più efficiente. Dipende se sshfs consente richieste in parallelo. (Penso di si.)
find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &
Se si desidera anche pre-memorizzare nella cache il contenuto del file, è possibile provare questo:
tar c project/folder/on/mounted/fs > /dev/null &
Ovviamente ciò richiederà molto più tempo, trasferirà molti dati e richiede di avere una dimensione della cache enorme. Ma una volta terminato, l'accesso ai file dovrebbe essere piacevole e veloce.