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 netcat , tar , 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
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.