没有 lrzsz,怎么传文件到服务器?
文件传输是日常运维中最常见的操作,在 linux 系统和 win/mac 系统之间传输文件,我们最常用的,应该是 lrzsz 工具,通过 rz(上传)/sz(下载),对于平常的小文件传输实在是太方便了
如果要传输大的文件,我们通常会选择 winscp 工具,通过 ssh 隧道进行传输
那么除了以上这些方法,或在没有这些工具的条件下,我们如何简单方便的进行文件传输呢?
下面介绍几个方法
python
python 中自带一个轻量级 web 服务器,在 python2 中是模块 SimpleHTTPServer,在 python3 中合并到 http.server 中
如图会在当前目录下启动一个默认 8000 端口的 web 服务,我们就可以通过浏览器直接访问该 web 服务,进行文件下载
当然在本地通过该方式启动 web 服务之后,在服务器上通过 wget 或 curl 等访问可以实现变相上传文件
小技巧:通常从运营商购买的服务器的带宽,是只限制出带宽而入带宽一般会比出带宽限制高或者不限制,这个时候,如果我们上传文件慢的话,我们可以改用从服务器下载的方式,而且服务器一般出端口不限制
Nginx/Apache
上面 python 的轻量 web 服务器,虽然很方便,但是很多时候,服务器都会设置防火墙、安全组等,不常用的端口通常不会开放,这个时候,就可以直接用 web 服务器了,常见的比如 Nginx、Apache、IIS、Tomcat 等,都可以
我们指定,web 访问,就是从服务器下载资源之后,渲染到浏览器的,通过 MIME 类型进行识别文件,加载渲染,所以,我们利用 web 服务器
将需要下载的文件放到 web 服务器指定的目录下,然后我们通过服务器 ip 或已配置的域名,通过浏览器访问该文件,即可下载,如果文件 MIME 类型被识别,我们可以将文件命名为不可识别的,这样就会直接下载,下载后我们再将后缀改回去即可
这样,通常 80、443 端口肯定是默认开放的,所以不会被防火墙拦截,这里就顺便提一下,打包的备份文件不管是压缩包,还是 sql,千万别放 web 目录下,小心被直接打包下载
同样,上传我们也可以在本地起这样的 web 服务,然后在服务器上进行下载操作
scp
scp 命令通常我们使用是在两台服务器之间通过 ssh 进行文件传输,很少人知道,scp 其实也可以在 windows 和 linux 之间进行文件传输,scp 命令格式不介绍了,直接看从 windows 传输到 linux 的演示
查看 linux 下
在 windows 下面使用 scp 的前提是,windows 要装有 ssh 类工具,现在 win10 自带 openssh,基本不需要安装,如果是旧系统,直接升级吧
nc
说到端口监听,除了 web 服务,nc 这个常用的网络瑞士军刀,必然可以做到
通常用 nc,要么是做网络测试,要么是做反弹 shell,而 nc 有个输入输出指令的操作,比如 nc -l 9999 > file,就是监听 9999 端口,把传过来的数据都写入到 file
而另一端呢,只需要通过 nc 命令,将需要传输的文件写入即可,比如 nc ip 9999 < file
这样 file 文件就会通过 nc 监听的端口传输过去,并写入到文件,也算是实现了文件传输
除了以上命令,你还知道什么简单又方便的文件传输方式,欢迎留言
版权声明: 本文为 InfoQ 作者【运维研习社】的原创文章。
原文链接:【http://xie.infoq.cn/article/a84d1d152a80fb7bb2b242a01】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论