在实际的开发过程中,很多时候我们都不直接在本机上开发,一般都在远程服务器上开发并运行程序。

比如三胖在实际开发中就会使用到很多台服务器:我有一台笔记本电脑,通过 ssh 连接着很多台服务器,我需要经常在不同的服务器上进行开发,所以总会遇到在不同计算机之间传输文件的情景。

可以归纳为以下几个情景:

  • 个人电脑和个人电脑之间传递文件;
  • 服务器和服务器之间传递文件;
  • 服务器与个人电脑(笔记本)之间传递文件。

工作的时候经常会遇到有时候需要把 linux 机器上的文件传到本地机器的场景。总结了一下大概有下面几种方法:

  1. 在本地机器上安装支持 scp 的 ssh 工具(这种大多是收费的)
  2. 在 linux 机器上使用 ftp 服务
  3. 在 linux 机器上安装 rz/sz 工具(需要在 linux 上安装额外的包,terminal 这边也需要支持)

今天的重磅是第三个情景——服务器与个人电脑之间的文件传递,相信很多同学这时候会迫不及待地说:“直接 rz,sz 命令不就得了吗,至于那么麻烦吗?”。

确实,sz/rz命令是Linux服务器与ssh客户端进行文件交互的命令,也就是上传和下载文件到服务器和本地。

sz:将选定的文件发送(send)到本地机器

rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)

确实,这两个命令是可以实现服务器与个人电脑之间上传下载文件的。不过有两个问题,当文件十分大的时候,对于部分电脑而言,sz/rz就会失败。还有,如果我们需要把文件传递给其他人,而不是从服务器上下载文件到本地,该怎么解决?

我们现在来了解在第三种情景下,怎么用一行代码来搭建一个http服务器实现文件传输。

1)cd 到需要共享文件的目录:

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

2)执行命令 python -m SimpleHTTPServer, 启动 HTTP 服务

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 就能看到共享目录下的所有文件了

Python 读取本地文件上传 python本地文件上传到服务器_python

如果需要很长时间使用的话,请将命令放置在 screen 或其他虚拟窗口中启动。

 

 



参考资料

1. 通过python模块实现服务器和本地机器之间快速拷贝文件

2. 两行python代码实现一个http服务器,告别文件传输烦恼