在实际的开发过程中,很多时候我们都不直接在本机上开发,一般都在远程服务器上开发并运行程序。
比如三胖在实际开发中就会使用到很多台服务器:我有一台笔记本电脑,通过 ssh 连接着很多台服务器,我需要经常在不同的服务器上进行开发,所以总会遇到在不同计算机之间传输文件的情景。
可以归纳为以下几个情景:
个人电脑和个人电脑之间传递文件;
服务器和服务器之间传递文件;
服务器与个人电脑(笔记本)之间传递文件。
工作的时候经常会遇到有时候需要把 linux 机器上的文件传到本地机器的场景。总结了一下大概有下面几种方法:
在本地机器上安装支持 scp 的 ssh 工具(这种大多是收费的)
在 linux 机器上使用 ftp 服务
在 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 就能看到共享目录下的所有文件了
如果需要很长时间使用的话,请将命令放置在 screen 或其他虚拟窗口中启动。
参考资料