經過python模塊實現服務器和本地機器之間快速拷貝文件

在實際的開發過程當中,不少時候咱們都不直接在本機上開發,通常都在遠程服務器上開發並運行程序。python

好比三胖在實際開發中就會使用到不少臺服務器:我有一臺筆記本電腦,經過 ssh 鏈接着不少臺服務器,我須要常常在不一樣的服務器上進行開發,因此總會遇到在不一樣計算機之間傳輸文件的情景。linux

能夠概括爲如下幾個情景:瀏覽器

  • 我的電腦和我的電腦之間傳遞文件;
  • 服務器和服務器之間傳遞文件;
  • 服務器與我的電腦(筆記本)之間傳遞文件。

工做的時候常常會遇到有時候須要把 linux 機器上的文件傳到本地機器的場景。總結了一下大概有下面幾種方法:bash

  1. 在本地機器上安裝支持 scp 的 ssh 工具(這種大可能是收費的)
  2. 在 linux 機器上使用 ftp 服務
  3. 在 linux 機器上安裝 rz/sz 工具(須要在 linux 上安裝額外的包,terminal 這邊也須要支持)

今天的重磅是第三個情景——服務器與我的電腦之間的文件傳遞,相信不少同窗這時候會火燒眉毛地說:「直接 rz,sz 命令不就得了嗎,至於那麼麻煩嗎?」。服務器

確實,sz/rz命令是Linux服務器與ssh客戶端進行文件交互的命令,也就是上傳和下載文件到服務器和本地。ssh

sz:將選定的文件發送(send)到本地機器

rz:運行該命令會彈出一個文件選擇窗口,從本地選擇文件上傳到服務器(receive)

確實,這兩個命令是能夠實現服務器與我的電腦之間上傳下載文件的。不過有兩個問題,當文件十分大的時候,對於部分電腦而言,sz/rz就會失敗。還有,若是咱們須要把文件傳遞給其餘人,而不是從服務器上下載文件到本地,該怎麼解決?工具

咱們如今來了解在第三種情景下,怎麼用一行代碼來搭建一個http服務器實現文件傳輸。spa

1)cd 到須要共享文件的目錄:.net

[root@V1 /]# cd /logs
[root@V1 logs]#

2)執行命令 python -m SimpleHTTPServer, 啓動 HTTP 服務code

Python2:

[root@V1 logs]#  python -m SimpleHTTPServer 8001  
Serving HTTP on 0.0.0.0 port 8001 ...

Python3:

python3 -m http.server port

3)如今在瀏覽器打開 http://[ip-address]:8001 就能看到共享目錄下的全部文件了

若是須要很長時間使用的話,請將命令放置在 screen 或其餘虛擬窗口中啓動。

 

 

參考資料

1. 經過python模塊實現服務器和本地機器之間快速拷貝文件

2. 兩行python代碼實現一個http服務器,告別文件傳輸煩惱

相關文章
相關標籤/搜索