View Full Version : Considerazioni su protocolli trasferimento via LAN
Ciao a tutti.
Ho il mio muletto con ubuntu 10.04 server da cui trasferisco spesso file, anche di grandi dimensioni.
Ultimamente mi sono posto il problema di quale sia il miglior protocollo per il trasferimento via LAN dei file.
Ho sempre sentito dire, ma non sono sicuro della cosa, che il protocollo FTP è il più veloce.
Attualmente ho una partizione Samba montata da cui trasferisco, ma a volte, a causa del traffico sulla LAN, i trasferimenti sono MOLTO lenti ( e poco affidabili ).
Per ora ho provato solo 2 strade: smb e sftp ( trasferimento ssh per intenderci ;) ). SMB è più veloce di SFTP ma ho avuto l'impressione che sia meno affidabile ( nel senso che è più facile che il trasferimento si blocchi o non vada a termine ).
Detto ciò c'è anche FTP, che non ho mai provato.
Oltre ad FTP c'è pure NFS, che forse è il più veloce?? :stordita:
Qualcuno mi aiuta a fare un po' di chiarezza su tutti qeusti protocolli?
EDIT: Ci sono altri protocolli che assolvono al mio scopo?
All'interno di una LAN domestica cambia poco in base ai protocolli, i fattori determinanti sono l'ampiezza di banda e la velocita' di lettura/scrittura sui supporti di memorizzazione (per i file piu' grossi della cache RAM).
Quindi se vuoi la maigliore velocita' al minor prezzo attacca il tuo server al client con un cavo cross gigabit e jumbo frames, o magari monta piu' schede di rete in channel bounding. E che gli hard disk siano attaccati in SATA, non via USB.
Se hai piu' client prendi uno switch gigabit e sempre cavi di qualita' (non farteli in casa, compra dei cat 7 gia fatti).
Il protocollo migliore per condivisione files all'interno di una LAN dovrebbe essere NFS, ma anche http con connessioni multiple puo' essere interessante (diciamo su configurazioni un po' piu' esotiche). Certo non ti serve la criptazione dati, che si puo' disabilitare anche per SSH / scp / sftp. Poi piu' RAM usi meglio e'.
magari con rsync ?
Non saprei, che vantaggi ci vedi?
FTP / HTTP permetterebbero il resume di un trasfertimento e con piu' files sicuramente potrebbero lavorare su piu' schede. Cosa che pero' immagino possa fare anche NFS.
TFTP dovrebbe poter passare su UDP, ma ne vale la pena? Secondo me no: il bottleneck per me e' la rete e poi la CPU oltre i ~50MB/s, solo dopo vale la pena di ottimizzare i protocolli. Ovvio che qualunque cosa criptata come sftp e' un'inutile overhead in una LAN.
Bho da me va' cosi' per es. :
conny:/tmp:# wget server/file
--2013-03-03 02:00:06-- http://chrome/file
Resolving server (server)... 192.168.0.254
Connecting to server (server)|192.168.0.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: ‘file’
100%[=====================================>] 104,857,600 59.6MB/s in 1.7s
2013-03-03 02:00:08 (59.6 MB/s) - ‘file’ saved [104857600/104857600]
credevo facesse il resume a differenza del ftp
pabloski
03-03-2013, 12:05
Le differenze sono più che altro a livello di features. FTP non offre tutte le features di NFS ad esempio.
Stesso discorso vale per rsync.
Se deve trasferire semplicemente dei file, forse FTP è la soluzione migliore. TFTP non lo è perchè lui specifica che la sua LAN ogni tanto s'incasina e perde pure affidabilità.
Rsync è molto più indicato degli altri però, per via del pipelining dei che riduce le latenze quando si trasferiscono molti file, la possibilità di comprimere i file da inviare, il backup differenziale, si può usare il delta encoding per trasferire solo le parti di un file che sono cambiate, ecc...
Però dipende sempre da quello che deve fare. Se deve poter accedere continuamente a quei file, direi che samba e nfs sono l'unica strada sensata.
magari con rsync ?
RSync l'ho visto, e devo dire che non sono riuscito a farci molto, lo trovo parecchio complesso, e veramente troppe opzioni.
Gli altri protocolli: ma con wget dal client come faccio a scaricare dal server?
Se do un wget indirizzo-muletto in che cartella sono? Nella home dell'utente? O nella radice?
Tra l'altro credo serva un server http configurato, non è il mio caso. No? :stordita:
@Pabloski: Attualmente, Samba mi va benissimo quasi sempre.
Quasi, perchè ci sono dei momenti in cui la rete LAN è trafficata, il router magari non riesce a gestire tutto in tempo e la banda scarseggia: mi succede che un trasferimento via smb di file da qualche GB può richiedere anche ORE per essere completato... :muro:
Attualmente sono alla ricerca di una soluzione di ripiego da usare quando samba fallisce. Mi rendo conto che se la banda è poca c'è poco da fare, però magari il protocollo X ottimizza meglio il trasferimento rispetto a smb, per dire..
So che RSync potrebbe essere la soluzione, ma non sono veramente riuscito a venirne a capo. Non riesco nemmeno ad accedere al server...
Inoltre, come farei se dovessi usarlo da computer Windows?
pabloski
03-03-2013, 12:16
sotto windows basta installare cygwin e si può usare rsync
Per usare http ti serve un server web, nginx o light http bastano e avanzano per servire file.
Diciamo che e' comodo per avere un mirror / cache locale, ad esempio per i pacchetti *.deb o per file grossi ai quali nella rete si accede spesso come versioni determinate di programmi.
Io userei nfs. Se non puoi usare un cavo dedicato magari a corta distanza potresti usare wifi 300n.
E non sottovalutare la soluzione piu' banale: hard disk sata o SSD rimovibile, con una shell sul server fai partire le copie e mentre lo recupri ( fai due passi che fa sempre bene) copi e accedi poi ai file a 300MB /s .
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.