聊聊机器间传文件的姿势

作者: | 更新日期:

对于机器间传文件,可谓是八仙过海各显神通。

本文首发于公众号:天空的代码世界,微信号:tiankonguse

大家好,这里是tiankonguse的公众号(tiankonguse-code)。
tiankonguse曾是一名ACMer,现在是鹅厂视频部门的后台开发。
这里主要记录算法,数学,计算机技术等好玩的东西。

这篇文章从公众号tiankonguse-code自动同步过来。
如果转载请加上署名:公众号tiankonguse-code,并附上公众号二维码,谢谢。

零、背景

作为一个开发, 机器间传文件也是一个必备的技能。
但是很多人常用的方法可能只有那一两个,一旦那几个在某些机器环境下行不通了,很多人就不知道怎么做了。

一、SCP

scp是secure copy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,主要用于linux服务器之间复制文件和目录。
scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而可以实现安全的远程拷贝文件。

从本地传到远程: scp -P port file user@host:pathDir 从远程传到本地: scp -P port user@host:pathToFile file

如果文件比较大, 则可以启用-C压缩功能。

二、SFTP

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。
sftp与ftp有着几乎一样的语法和功能,不过SFTP是SSH的一部分,它使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。
但是,由于这种传输方式使用了加密、解密技术,所以传输效率比普通的FTP要低一些。

从本地传到远程: sftp -o Port=port user@host:pathDir -b batchfile(put localFile remotePath) 从远程传到本地: scp -o Port=port user@host:pathToFile file -b batchfile(get remoteFile localPath)

三、SSH

利用SSH+压缩+管道实际上也可以传文件的,不过很多人不知道。

从本地传到远程: gzip -c localPathAndfileName | ssh -p port user@host 'gunzip > remotePathAndfileName' 从远程传到本地: ssh -p port user@host "gzip -c remotePathAndfileName" | gunzip -c > localPathAndfileName

四、NC

netcat(简称nc)是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。
通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。
你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。
我们这里只讨论nc的用于数据传输的情况。

在服务器端(建议将PORT设置的大点):

sudo nc -l -p port | tar -zxf - #l 参数用于监听
sudo nc -l -p port > fileName

在客户端:

tar -zcf - fileName | sudo nc host port
sudo nc host port < fileName

五、rsync

rsync(remote sync)是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来,它主要用于数据的同步备份。
临时rsync的话可以使用SSH通道来传输数据,经常使用的话可以使用配置文件。
这里不多介绍了, 教程GOOGLE上一大堆教程。

六、FTP

FTP命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。
一般大家刚开始学习建网站的时候,买了虚拟空间后都是通过FTP或者SFTP客户端来传文件的,这里就不多介绍了。

七、rcp

rcp 意为“ remote file copy ”(远程文件拷贝)。
该命令用于计算机之间进行文件拷贝。
其有两种格式:第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。

八、wget

wget支持 HTTP,HTTPS 和 FTP 协议,常用来抓取远程网页数据。

九、curl

curl 与 wget类似,不过功能更强大,这里也不做介绍。
我提供的一个网站接口必须加上域名这个包头head才能拉倒数据,于是经常有人问我curl怎么加包头head。
这些命令还是建议大家还是查查文档,都是基础命令。

十、samba

好吧, 上次那个病毒就和这个有关系。
我们常用这个让windows和linux进行文件映射,然后在windows下就可以直接操作linux下的文件目录了。

十一、局域网文件共享

大三的时候,和学长开黑,但是我的LOL卸载了。
于是我们的两个笔记本直接插上网线,然后局域网共享过来,网卡好的话速度会很快很快,不过我的网卡比较挫,最后还是使用下一个方法了。

十二、U盘

使用U盘传输文件是人人都会的方法。

十三、QQ

QQ局域网传输文件很快的,如果看看监控的话就会看到,网卡直接跑满了。
公众号不能插入表情,差评!

十四、结论

好了,实际上对于windows大家应该都是使用的QQ,对于linux都是使用的SCP吧, 这两个可以解决大部分问题了。
但是当这两个不能使用后的时候,需要知道还有很多其他的方法。

对了现在开通了公众号和小密圈。
博客记录所有内容。
技术含量最高的文章放在公众号发布。
比较好玩的算法放在小密圈发布。
小密圈这周接受免费加入,欢迎大家加入看各种算法的思路。

长按图片关注公众号,接受最新文章消息。

本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。

关注公众号,接收最新消息

tiankonguse +
穿越