要跨機器複製檔案、資料夾等等,可以使用 scp 來達成,不過,使用 scp 會需要加解密的過程,會消耗 CPU 用量,也會讓傳輸整個速度是慢的~
於是想要透過網路不加密直接傳送資料,可以使用 ftp (但是這需要另外裝套件、設定等等)
所以在 Debian Linux 上,直接使用 tar + nc(netcat)直接傳輸,速度比 scp 快很多
Linux 使用 NC 複製遠端資料夾
我們要複製資料的 scp 語法:scp -r 192.168.1.2:/data/backup 192.168.1.1:/home/user
使用 NC 要怎麼做呢?
- 接收主機:192.168.1.1 (預計收到資料的主機)
- ssh 192.168.1.1
- cd /home/user
- nc -l -p 9999 | tar xvf -
- 或 nc -l -p 9999 | pigz -d | tar xvf - # 搭配 pigz 壓縮
- 發送主機:(路徑 /data/backup)
- ssh 192.168.1.2
- cd /data # /data 內含:/data/backup 資料夾
- tar cvf - backup | nc 192.168.1.1 9999 # 接收主機 /home/user/backup 會自己有此資料夾
- 或 tar cvf - backup | pigz -4 | nc 192.168.1.1 9999 # 搭配 pigz 直接解開(pigz -4 使用4顆CPU)