局域网文件传输

作为一个服务端开发人员,往服务器上传文件、迁移服务都是常见的需求,那应该怎么操作呢?我是非常讨厌迁移服务,运维那边有调整,然后就来封邮件,ABCDEF…等机器因XXX不可抗拒原因需要关机,请各位配合将相关服务迁移到WXYZ…上,这个时候就看各位朋友自己平时是否规范以及运维同事们给不给力了,如果说你的每个服务都有Jenkins的自动发布,那对你来说迁移服务就像吃午饭一样简单。但是如果你没有配置,那恐怕就有点麻烦了。如果使用scp,一个一个拷到目标服务器上。如果你就两台服务器(两台机器一般很少见,毕竟一旦挂了一台所有的压力都落在了剩下的那台上,负载均衡是有问题的,我一般最少都用三台),那还简单,如果你有20台机器。甚至更多,那就是一个灾难。以下是我最近用的几个方法,觉得还挺有用的,分享给大家。

老生长谈:Scp

使用scp命令,scp的全名是secure copy,是用于在Linux下进行远程拷贝文件的命令。是最容易也是最麻烦的一种操作,scp [参数] [原路径] [目标路径]
平时常用scp your_file target_host:/tmp如果你是一个文件夹,那么加上-r参数,递归复制整个目录。然后发到目标机器上。比较麻烦。

人类的好朋友 — Python

如果你的服务器上有python,那就简单了。如果你的机器是python2.7,那么直接在你要传输的目录上,使用python -m SimpleHTTPServer 8080你现在已经在当前机器开启了一个HTTP服务,你去你的目标机器,直接用wget http://source_host:8080/target_file就可以下载到文件了。那么python3.6以上版本的朋友不开心了,因为刚才那个命令,python3.6用不了。别担心,伟大的python语言怎么能在版本升级的情况下开历史的倒车呢?python3 -m http.server 8080python3直接用这个就可以起http server服务了。但是这么做,你的运维同事可能会不高兴,因为他们突然监听到了,你的机器有莫名其妙的端口被占用。他们会很紧张。而且如果你的机器上没有python。你也不能去你的生产环境上安装一个python。请记住,生产环境无小事!生产环境下的任何操作都有可能引起线上故障,所以如果你不想半夜起床处理线上问题,那么请杜绝在生产环境服务器做任何危险操作。

系统原生的工具 — nc

nc全名NetCat 是一个Linux自带的网络工具,很多发行版都有。nc可通过TCP或UDP协议传输读写数据。功能很强大,具体参数可通过 man nc在linux的发行版去查,或者用度娘和google随便一搜都有一大堆的教程,这里只说一个常用的用法。在你要接受文件的文件夹目录下起nc客户端使用命令nc -4 -l 10010 | tar xf -,现在你就已经起了一个绑定10010端口的nc客户端了。然后在你的服务端要传输的文件夹执行命令tar cf - . | nc target_host 10010然后就等着执行完成就可以了。用起来很方便,不过这也有一些弊端,由于nc命令比较原始,没有什么断点续传、超时重传等功能。所以网络条件不好的时候,慎用。

尾序

作为一个小白,我只列了几个我平时用过的方法,如果有更好地方式,欢迎分享,要是文章有什么不对的地方,欢迎指正。

收藏 打印