2012-01-17

Ubuntu 用 nc 指令互傳檔案

阿舍前幾天在做 VPS 的升級作業的時候,在 Ubuntu Documentation 網站上有看到這一篇和備份有關的說明文件,其中有提到將備份出來的檔案直接下傳到另外一台電腦的作法,阿舍那個時候所用的本地電腦是沒有對真實 IP 的,所以,就沒有照它的說明來試試,今天有想到,就把電腦切到 Ubuntu 來試試,用二台虛擬機器來互傳檔案看看哩!

Credit : Sven

阿舍看的這篇文,是用一個做「nc」的指令來傳檔的,阿舍查了一下,nc 指令的全名是「netcat」,所以,除了用 nc 指令來執行以外,也可以使用全名的 netcat 指令執行,而執行的方式是要先在接收端啟動 nc 程式來指定要從那一埠號來接收檔案及要儲存成的檔案名稱,然後,再到要送出檔案的電腦上執行 nc 來送檔。

以阿舍要從 A 電腦傳一個 檔案名稱叫 arthurtoday.txt 的檔案到 B 電腦的作法為例,阿舍先到 B 電腦上執行 nc 程式並指定用 8888 埠號來接受檔案,然後,將收到的檔案存成 ayubiz.txt,那麼操作的指令就會下面這樣。

nc -l 8888 > ayubiz.txt

接著,阿舍就要到 A 電腦來送檔出去,在送檔前,一定要知道對方電腦的 IP 和等待接收的埠號才行,以阿舍為例,B 電腦的 IP 的 192.168.2.103,而開啟的埠號是 8888,所以,阿舍就用下面這一行的指令就可以把檔案給傳過去了。

cat arthurtoday.txt | nc 192.168.2.103 8888

注意看一下上面的這一行指令,你大概就會發現,nc 指令自己是無法傳檔的,它是被當做標準輸出/輸入裝置的方式來接收和輸出檔案的,因此,如果要透過 nc 指令來傳檔的話,就必需在 nc 指令前,先有個可以產出檔案來送給 nc 指令的動作才行,以阿舍的做法來說,透過 cat 指令來打開 arthurtoday.txt 檔,但是,不是送到螢幕,而是送給nc 指令,那麼 nc 就會檔案送到指定的 IP 和埠號去了。

阿舍試了一下,nc 指令似乎不能傳送整個資料夾和多個檔案,不過,操作簡單又容易,傳檔的速度也不慢,因此,阿舍覺得 nc 指令比較適合在二台 Linux 或 Ubuntu 電腦臨時要傳檔時,但是,電腦上沒有安裝任何其他的 ftp 或檔案分享之類的軟體或服務時使用哩 !

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

2 則留言 :

chilin 提到...

可以使用更安全的scp (ssh copy)

本機複製到遠端
scp /tmp/a.txt root@192.168.1.2:/tmp/

若是資料夾可以加上參數 -r
scp -r /tmp/dira root@192.168.1.2:/tmp/

也可以從遠端複製到本機
scp root@192.168.1.2:/tmp/b.txt /tmp/

Kevin 提到...

rsync 還可以做資料同步

張貼留言

歡迎留言提問和討論 .... 😁