Qual è il modo più veloce per trasferire file di grandi dimensioni tra due computer sulla stessa rete?

Quanti soldi siete disposti a spendere?

Ma seriamente, la risposta dipende da un sacco di cose. Per semplicità, diciamo che ci sono due sistemi, desktop o server, che hanno file memorizzati su dischi come dispositivi, e le due macchine sono collegate da una rete.

In questa configurazione, ogni cosa ha un limite di larghezza di banda, e ognuno di essi potrebbe essere il fattore limitante.

  • Larghezza di banda del dispositivo di memorizzazione - le unità SATA rotanti tendono ad essere circa 150 Megabyte al secondo. Gli SSD con interfacce SATA possono essere circa 800 MB/sec. Gli SSD con interfacce NVMe possono arrivare fino a 2,5 GB/sec
  • Rete - Il Wifi sarà piuttosto lento, da 50 a qualche 100 Megabit/secondo. L'Ethernet cablata dipenderà dal più lento dei due adattatori host e da uno switch che li collega. La tipica attrezzatura domestica è probabilmente 100 Megabit/secondo, ma potrebbe essere 1 Gigabit/secondo. Se spendi cifre modeste, la maggior parte dei desktop e dei server supporteranno 10 Gigabit/secondo Ethernet. Soldi seri ti porteranno a 25 o 100 Gigabit/secondo. Soldi seri spesi per Infiniband vi porteranno a 400 Gigabit/secondo. Non ha molto senso perché questo è molto più veloce dei dispositivi di archiviazione.
  • Sistema I/O - desktop e server avranno sistemi I/O PCIexpress, ma varieranno nel numero di "corsie" disponibili per i diversi dispositivi. Ogni corsia potrebbe funzionare a 2,5 Gigabit/secondo o giù di lì. Diverso nelle diverse generazioni PCI
  • CPU - Le CPU avranno una potenza di calcolo e una larghezza di banda di memoria limitata. Per le reti più lente, può funzionare usare la CPU per fare la compressione dei dati, mentre per le reti veloci, la CPU può diventare il fattore limitante ed è meglio disattivare la compressione.

La versione TLDR è che se hai unità disco che girano, allora usare 1 Gbps Ethernet e ottenere 800 o 900 Megabit è abbastanza buono.

Se hai degli SSD NVMe, allora spendi qualche dollaro per un collegamento punto a punto o commutato a 10 Gbps e può funzionare a un Gigabyte/secondo.

Ora, se stai trasferendo piccoli file, allora ci sarà un ulteriore fattore di rallentamento per le operazioni di metadati - devi creare i file e le voci di directory e questo sarà di solito molto più lento del trasferimento effettivo dei dati.

Ora dovremmo parlare delle applicazioni. Io userei rsync, perché si può dire a rsync di mantenere due cartelle sincronizzate, e trasferirà solo i file che sono cambiati, e ha opzioni di compressione.

Ci sono molte altre opzioni, come (su linux) piping zip o tar in ssh. Non ho idea di quale possa essere la cosa migliore da usare su Windows.

Sono ragionevolmente sicuro che il montaggio remoto di un'unità tramite condivisione dell'unità non sia l'approccio migliore. Questo rallenterà le operazioni sui metadati. Potrebbe essere ok per alcuni file di grandi dimensioni, perché il protocollo SMB non è orribile.

Nel mio seminterrato ho un dolce server a 8 core con 128 GB di RAM. Ha un collegamento ethernet dedicato da 10 Gbps a un box NAS RAID a pochi metri di distanza. Si sente abbastanza veloce per le operazioni di file in remoto. Posso leggere o scrivere file di grandi dimensioni a 300 Megabyte/secondo o giù di lì. D'altra parte, ho un'unità esterna da 10T sul mio desktop, e non sta facendo molto perché è collegata solo via USB a 400 Gbps ed è comunque un'unità non particolarmente veloce.