GNU/Linux >> Linux Esercitazione >  >> Linux

Come trasferire rapidamente file di grandi dimensioni in rete in Linux e Unix

Oggi ho dovuto reinstallare il mio server Ubuntu che uso spesso per testare diverse applicazioni. Il mio server Ubuntu ha oltre 200 GB di dati e non voglio perderli. Posso trasferire quei dati tramite scp o impostare NFS, FTP per copiare file, ma sono abbastanza sicuro che ci vorrebbero ore per trasferire file così grandi. Durante la ricerca di un metodo alternativo, mi sono imbattuto nel seguente metodo. Possiamo trasferire rapidamente file di grandi dimensioni tra due sistemi in rete utilizzando netcattar , e pv comandi in qualsiasi sistema operativo GNU/Linux e simile a Unix. A differenza di altri metodi, lo trovo molto veloce e veloce. Per chi non lo sapesse, Netcat è una semplice utility Unix che legge e scrive dati attraverso connessioni di rete utilizzando il protocollo TCP o UDP. catrame è uno strumento di archiviazione a riga di comando e pv , sta per pipe viewer, viene utilizzato per monitorare l'avanzamento dei dati. Ora permettetemi di mostrarvi come trasferire rapidamente file di grandi dimensioni tra due sistemi Linux. Non è così difficile come pensi. Continua a leggere.

Scarica - Ebook gratuito:"6 utili strumenti a riga di comando di Linux per gli amministratori di sistema"

Trasferisci rapidamente file di grandi dimensioni in rete tra due sistemi in GNU/Linux

Assicurati di aver installato le utilità "netcat" e "pv" sui tuoi sistemi. Se non sono già installati, puoi installarli come mostrato di seguito. Il pacchetto "tar" è disponibile per impostazione predefinita sulla maggior parte dei sistemi Linux, quindi non è necessario installarlo.

Su Arch Linux e suoi derivati:

$ sudo pacman -S netcat pv

Su RHEL, CentOS, Fedora:

$ sudo yum install epel-release
$ sudo yum install nc pv

Oppure,

$ sudo dnf install nc pv

Su Debian, Ubuntu, Linux Mint:

$ sudo apt-get install netcat pv

Ora vediamo come copiare rapidamente i file di grandi dimensioni tra due sistemi.

Per farlo, esegui il seguente comando come root utente sul nodo ricevente (sistema di destinazione):

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

Sul nodo di invio (sistema sorgente), esegui questo comando come root utente:

# tar cf - * | pv | netcat 192.168.1.105 7000

Qui, 192.168.1.105 è il mio sistema di destinazione. tar cf - * copierà tutto nella directory di lavoro corrente nel sistema di destinazione e i file verranno estratti all'altra estremità.

Nota: Sui sistemi RHEL e CentOS, usa "nc" invece di "netcat" come mostrato di seguito. Inoltre, devi aggiungere la porta "7000" a iptables/firewall-cmd sul sistema di destinazione.

Dopo aver aggiunto la porta sul sistema di destinazione, puoi trasferire i file più grandi come mostrato di seguito.

Sul sistema di destinazione:

# nc -l -p 7000 | pv | tar x

Sul sistema sorgente:

# tar cf - * | pv | nc 192.168.1.105 7000

Inoltre, puoi specificare un file particolare come di seguito.

# tar cf - /home/sk/test.file | pv | netcat 192.168.1.105 7000

Tieni presente che entrambi i sistemi dovrebbero avere netcat installato . Ora prendi una tazza di caffè. Vedrai che i file verranno copiati molto rapidamente rispetto ai metodi tradizionali come scp.

Inoltre, non vedrai alcun segno del completamento del trasferimento di file su entrambi i lati. Questi comandi continueranno a essere eseguiti finché non li fermerai manualmente. Devi controllare manualmente le dimensioni dei file su entrambi i sistemi utilizzando "du -h " comando. Se la dimensione del file nel sistema di destinazione è la stessa del sistema di origine, puoi presumere che il processo di trasferimento del file sia completato e uscire dal comando premendo CTRL+C .

Trasferisci rapidamente file di grandi dimensioni tra due sistemi in Unix

Sui sistemi operativi Unix, netcat si chiama nc. Quindi, per copiare file di grandi dimensioni tra sistemi in rete, il comando sarebbe:

Sul sistema di destinazione:

# nc -l 7000 | pv | tar -xpf -

Sul sistema sorgente:

# tar -cf - * | pv | nc 192.168.1.105 7000

Di nuovo, questi comandi dovrebbero essere eseguiti come root utente. Inoltre, sia i sistemi di origine che quelli di destinazione dovrebbero avere netcat e pv installati. Il trasferimento di file di grandi dimensioni su LAN utilizzando netcat e tar può davvero farti risparmiare un sacco di tempo.

Disclaimer: Tieni presente che non c'è sicurezza in questo metodo . Perché, come puoi vedere negli esempi precedenti, non c'è autenticazione su entrambi i lati. Tutto quello che devi sapere è l'indirizzo IP del sistema di destinazione. Il trasferimento di file tramite netcat è consigliato solo all'interno di reti protette . Se sei paranoico sulla sicurezza, ti consiglio vivamente di utilizzare scp comando.

Se la tua sicurezza è così importante per te, puoi utilizzare Rsync per trasferire file in modo sicuro.

$ rsync -ravz /path/to/source/files/ destination-ip:/path/on/destiny

Grazie:Ppnman

Questo è tutto. Conosci un altro modo per copiare rapidamente file di grandi dimensioni? Per favore condividilo nella sezione commenti qui sotto.


Linux
  1. Come trasferire file tra due computer utilizzando i comandi nc e pv

  2. Come configurare il server SAMBA e trasferire file tra Linux e Windows

  3. Come trovare file di grandi dimensioni Linux con i comandi find e du

  4. Linux:directory standard e/o comuni su OS Unix/linux?

  5. Come trasferire file in Linux con SCP e Rsync

Come installare Rclone in Linux e Unix

Come configurare l'indirizzo IP statico in Linux e Unix

Come servire rapidamente file e cartelle su HTTP in Linux

Come trasferire file tra Dropbox e Google Drive con Rclone in Linux

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux