在Linux系统中,除了常见的
wget和curl,还有许多其他命令可用于文件下载,每种工具都有其独特的功能和适用场景。本文将详细介绍这些命令的使用方法及参数说明,帮助你更高效地完成文件传输任务。
1. wget
简介:wget 是一个非交互式的命令行下载工具,支持HTTP、HTTPS和FTP协议,适合批量下载和递归抓取网页资源。
常用参数:
-O <文件名>:指定下载文件的保存名称。-c:断点续传,继续未完成的下载。-r:递归下载整个目录或网站。-P <目录>:指定下载文件的保存路径。-q:静默模式,不显示下载进度。
示例:
Bashwget -O image.jpg https://example.com/file.jpg # 下载并重命名文件 wget -c https://example.com/large.iso # 断点续传 wget -r -np https://example.com/directory/ # 递归下载目录(不追溯父目录)
2. curl
简介:curl 支持多种协议(HTTP、FTP、SFTP等),功能更侧重于数据传输而非单纯下载,适合API调试和复杂请求场景。
常用参数:
-o <文件名>:将输出保存到文件。-O:使用远程文件名保存。-L:自动跟随重定向。-x <代理地址>:通过代理服务器下载。-H:自定义请求头(如-H "Authorization: Bearer token")。
示例:
Bashcurl -o data.json https://api.example.com/data # 保存为指定文件 curl -LO https://example.com/file.tar.gz # 使用远程文件名并跟随重定向 curl -x 192.168.1.1:8080 http://example.com # 通过代理下载
3. scp
简介:基于SSH协议的安全文件传输工具,适用于本地与远程服务器之间的文件传输。 常用参数:
-r:递归复制目录。-P <端口>:指定SSH端口(默认22)。-p:保留文件权限和时间戳。
示例:
Bashscp -P 2222 local_file.txt user@remote:/path/ # 指定端口上传文件 scp -r user@remote:/remote_dir ./local_dir # 递归下载目录
4. rsync
简介:支持增量同步和高效传输,常用于备份和镜像。 常用参数:
-avz:归档模式(保留属性)、显示进度、压缩传输。--delete:删除目标端多余文件以保持同步。-e:指定远程Shell(如-e "ssh -p 2222")。
示例:
Bashrsync -avz /local_dir user@remote:/remote_dir # 同步本地目录到远程 rsync -avz --delete user@remote:/backup ./ # 删除本地多余文件
5. lftp
简介:支持FTP、SFTP、HTTP等多种协议,提供交互式操作和批量任务管理。 常用参数:
mirror:镜像下载或上传目录。get/put:下载或上传单个文件。set ftp:passive-mode 1:启用被动模式(解决防火墙问题)。
示例:
Bashlftp -e "mirror --parallel=5 /remote_dir /local_dir" sftp://user@host # 并行下载目录 lftp -c "open ftp://example.com; get file.txt" # 非交互式下载
6. aria2
简介:多线程下载工具,支持HTTP、BT和Metalink协议,适合大文件高速下载。 常用参数:
-s <线程数>:指定并发连接数(默认5)。-c:断点续传。-i <文件>:从文件读取URL列表批量下载。
示例:
Basharia2c -s 10 -c https://example.com/large.iso # 多线程下载 aria2c -i urls.txt # 批量下载URL列表中的文件
7. httpie
简介:面向API的HTTP客户端,支持JSON和会话管理,也可用于简单文件下载。 常用参数:
--download:下载文件并保存。--output <文件>:指定输出路径。--session:保存会话状态(如Cookie)。
示例:
Bashhttp --download GET https://example.com/file.jpg # 下载文件 http --session=user session.json api.example.com # 使用会话保持登录状态
总结
- wget/curl:基础下载工具,适合简单场景。
- scp/rsync:适用于服务器间安全传输和同步。
- lftp/aria2:多协议支持和高性能下载。
- httpie:更适合API交互和结构化数据请求。
根据需求选择合适的工具,例如批量下载用wget或aria2,服务器同步用rsync,调试API用curl或httpie。掌握这些命令的参数组合,能显著提升Linux环境下的工作效率。