Trasferire grandi quantita’ di file alla max velocita’

Spostare molti files velocemente

Netcat per spostare grandi files

NETCAT

Con questo articolo iniziamo a presentare un ottimo tool che, almeno personalmente, e’ stato davvero utile in mille attivita’ sistemistiche, netcat.

Utilita’ 1
Vi è mai capitato di dover trasferire delle directory contenenti elevati quantitativi di files da un server Linux ad un altro ? In caso affermativo avrete sicuramente notato come, anche se il trasferimento avveniva in LAN, comunque la durata dell’operazione aumentava esponenzialmente con l’aumentare dei files da trasferire. Si tratta di un normale fenomeno di overhead dovuto al fatto che ogni singolo trasferimento di file avviene su un differente stream di dati, ed il numero di stream gestibili in contemporanea da un server è di solito piuttosto limitato.

Spesso si cerca di ovviare al problema creando prima un unico archivio .tar contenente i files da trasferire e quindi procedendo con un unico trasferimento. In questro caso si risolve egregiamente il problema di overhead di rete ma la cosa potrebbe diventare comunque problematica nel caso in cui ad esempio lo spazio su disco fosse limitato al punto da non poter consentire la creazione del tar temporaneo.
Se però il comando tar viene utilizzato in maniera intelligente assieme all’utility netcat, abbiamo la possibilità di effettuare comunque un traferimento super-veloce su un unico stream di dati senza la necessità di dover creare degli archivi temporanei. Ecco come possiamo procedere:
Sul server di destinazione (quello verso cui trasferiremo i nostri files), lanciamo il comando:

nc -l -p 888 | tar zxvPp   # il server di destinazione e' in ascolto sulla porta 888 pronto per decomprimere

Sul server master (quello da cui traferiamo i files), lanciamo il comando:

tar czvOPp --same-owner /<source_dir> | netcat -w 5 <ip_macchina_destinazione> 888

Queste due operazioni, effettuate in sequenza, fanno si che i files contenuti nella directory “/source/dir” del server master, vengano compressi in un tar che verrà inviato immediatamente (grazie alla pipe gestita con netcat) verso la porta 888 del server di destinazione. Quest’ultimo da parte sua è configurato per rimanere in ascolto sulla porta 888 e per redirezionare il flusso di dati ricevuto in ingresso direttamente al comando tar lanciato in modo da effettuare una decompressione nella directory “/target/dir” che avrete preventivamente creato ed in cui vi sarete spostati per ricevere il flusso di dati.

Gli usi di netcat sono davvero innumerevoli, tra cui aprire shell remote per lanciare comandi, scansioni di rete fin’anche alla clonazione di intere partizioni o addirittura di un’intera linux-box.
Tutto cio’ lo vedremo nei prossimi articoli su netcat.

#netcattoolmultiuso

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.