Cookie

Trasferire file di grandi dimensioni velocemente sulla rete con Netcat

Pubblicato da TheJoe il

Tempo di lettura stimato: 2 minuti

Attenzione


Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.

In questi giorni ho dovuto reinstallare Ubuntu per passare alla versione 18.04 LTS. Ho preferito reinstallare ex novo per evitare problemi di incompatibilità con vecchi repository e pacchetti obsoleti. Visto che la directory /home/ supera ampiamente i 700GB e che ho a disposizione un NAS (in realtà una piccola Linux Box) con un disco da 1TB ho pensato di trasferire il backup tramite LAN.

Ho vagliato le alternative possibili: SCP, FTP, SMB, NFS… in tutti i casi il trasferimento sarebbe durato svariate ore. Poi sono incappato in un articolo che parlava di “netcat” unito a “tar” e “pv“, e della possibilità di trasferire i file compressi sulla LAN. A differenza dei metodi precedenti netcat si è rivelato molto più veloce grazie alla compressione anche se meno sicuro (i file però sono stati trasferiti all’interno di una LAN domestica protetta).

Per chi non lo sapesse netcat è una piccola utility a riga di comando che legge e scrive dati attraverso la rete usando i protocolli TCP o UDP. “Tar” è uno dei comandi più conosciuti dagli utenti del terminale Linux: serve a comprimere / decomprimere archivi. Mentre “pv” (Pipe Viewer) è un piccolo monitor del progresso nel trasferimento.

Per prima cosa assicuriamoci di avere i pacchetti netcat e pv su entrambi i nostri sistemi. Se non lo sono sarà sufficiente lanciare apt dal terminale:

$ sudo apt install netcat pv

Ora dovremo fare in modo che il computer che riceverà i file sia predisposto per la ricezione. Lanciamo il seguente comando come utente root sul computer di destinazione:

# netcat -l -p 7999 | pv | tar x

Con questo comando stiamo lanciando netcat che:

  • -l” – è configurato per ricevere anziché per inoltrare
  • -p 7999” – riceverà sulla porta 7999
  • pv” – come già spiegato mostrerà una barra di avanzamento
  • tar x” – all’arrivo del file compresso “tar” dovrà decomprimere
Guarda qui:  Video deshake con Linux: stabilizzare un video mosso con Transcode pt. 2

Sul computer che inoltrerà i file invece lanceremo questo comando sempre come utente root:

# tar cf - * | pv | netcat 192.168.1.103 7999

L’indirizzo di destinazione nel mio caso è 192.168.1.103. Il comando “tar cf -” copierà per intero il contenuto della directory corrente sul sistema di destinazione e – come già visto – i file verranno poi estratti.

Prestare attenzione alla porta. Nel mio caso sto usando la porta 7999 perché non è assegnata ad alcun servizio in particolare. Ovviamente è possibile modificare questo parametro, da fare su entrambi i computer.

Attenzione

L’ho già scritto, ma vorrei sottolinearlo nuovamente. Questo metodo non offre sicurezze di alcun genere. Com’è chiaro in questi brevi esempi non c’è bisogno di autenticarsi né sul server, né sul client. Consiglio di usare questo metodo solo su reti LAN protette.


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

1 commento

Wormhole: trasferire file in modo sicuro su internet » TheJoe.it · 4 Novembre 2024 alle 9:24 AM

[…] Il funzionamento di Wormhole sul web è a grandi linee quello di NetCat sulla LAN. Forse ti interesserà un articolo in cui parlavo di NetCat. […]

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.