linux中最常用的文件传输命令
仅个人想法,会持续不间断更新和改进。
现在的Linux大抵都是具备图形界面的,特别是个人使用的话,不装个GUI界面那就说不过去了。
不过但是要远程使用服务器,后者超算,或者只能命令行的方式登陆到其他服务器,其他终端的话,那么命令行的文件传输命令就显得尤为重要。
如果仅仅会右键另存为,岂不抓瞎?
此时,我们就需要一些命令行的文件传输命令,比如wget
和curl
,这两个命令是Linux中最常用的文件传输命令。
超多协议传输的 - curl
Linux curl
命令是一款用于从一个server端传输的工具。
很强力,支持众多协议,比如:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP,SMTPS, TELNET 和 TFTP.
说实话,有些协议我也不知道,不过我们只需要知道这个命令设计之初是希望不需要用户的交互和介入,就可以完成数据的传输。
所以这个命令被广泛应用于数据传输、测试、调试和自动化脚本中。
官方定义为:
curl - transfer a URL
语法
1 | $ curl [options / URLs] |
参数:
-O
: 把输出写到该文件中,保留远程文件的文件名-u
: 通过服务端配置的用户名和密码授权访问
默认传输下载文件
默认情况下,将下载的数据写入到文件,并且使用服务器上的名字,这里以下载Linux的内核代码为例。
1 | $ curl https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.gz -O |
需要授权的网站
部分网站可能需要访问的授权,此时可以使用-u
选项提供用户名和密码进行授权:
1 | $ curl -u username https://www.website.com/ |
批量下载
当然,这么强力的工具,肯定是支持批量下载的,并且是正则表达式的支持。
比如:ftp://ftp.example.com/的file1,file5和file7,方法如下:
1 | $ curl ftp://ftp.example.com/file{1,5,7}.txt |
如果下载ftp://ftp.example.com/的从file1到file100的100组文件,方法如下:
1 | $ curl ftp://ftp.example.com/file[1-100].txt |
非交互的下载工具 wget
Linux
系统中的wget
是一个下载文件📀的命令行工具,特别普遍 。
对于Linux
用户是必不可少的工具,对于经常要下载一些软件或从远程服务器恢复备份到本地服务器,这个命令尤为重要。
wget
支持很多协议,比如HTTP
,HTTPS
和FTP
协议,还可以使用HTTP
代理。
wget
的有诸多特点,比如
- 自动下载
wget
支持自动下载,即wget
可以在用户退出系统的之后在后台执行。这意味着你可以登录系统,启动一个wget
下载任务,然后退出系统,wget
将在后台执行直到任务完成,这是个牛气冲天的功能。 - 完全重建
wget
可以跟踪HTML
页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget
遵循Robot Exclusion标准(/robots.txt).wget
可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。 - 高稳定
wget
非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget
会不断地尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
命令格式
1 | $ wget [参数] [URL地址] |
用于从网络上下载资源,没有指定目录,下载资源会默认为当前目录。wget
虽然功能强大,但是使用起来还是比较简单:
使用范例
wget
的命令参数很多,不过常用的为下面几个,详细的可以看进阶。
使用wget下载单个文件
比如,我们下载个Ubuntu的最新版本,试下效果如何
1 | $ wget http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso |
在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
使用wget -O下载并以不同的文件名保存
这个对于动态链接的下载比较有用,特别是有些文件的名字实在是太……………….长了
1 | $ wget -O wordpress.zip http://www.ubuntu.com/download.aspx?id=1234 |
使用wget -c断点续传
1 | $ wget -c http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso |
使用wget -c重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。
使用wget -o把下载信息存入日志文件
1 | $ wget -o download.log URL |
不希望下载信息直接显示在终端而是在一个日志文件,可以使用,特别注意需要与-O
来区分开~