菜鸟科技网

Unix下载文件有哪些常用命令?

在Unix及类Unix操作系统中,下载文件是日常运维和开发中的常见需求,根据不同的场景(如是否支持交互、是否需要断点续传、是否需批量下载等),有多种命令可供选择,以下将详细介绍常用的文件下载命令,包括其基本用法、参数选项及适用场景。

Unix下载文件有哪些常用命令?-图1
(图片来源网络,侵删)

wget命令

wget是Unix/Linux系统中最常用的下载工具之一,支持HTTP、HTTPS、FTP等多种协议,具有断点续传、递归下载、后台运行等功能,其基本语法为wget [选项] [URL]

核心参数选项:

  • -r:递归下载,可下载整个网站或目录结构。
  • -np:不下载父级目录,避免递归时下载多余文件。
  • -nH:不创建以主机名命名的目录,保持文件结构简洁。
  • -c:断点续传,若下载中断,可从断点继续下载。
  • -b:后台运行,将日志输出至wget-log文件。
  • -O:指定输出文件名,如wget -O newfile.zip http://example.com/file.zip
  • -P:指定保存目录,如wget -P /path/to/save http://example.com/file.zip
  • --limit-rate:限制下载速度,如wget --limit-rate=100k http://example.com/file.zip
  • --user/--password:认证用户名和密码,适用于需要权限的FTP/HTTP资源。

示例场景:

  1. 下载单个文件并重命名:wget -O data.csv http://example.com/data.csv
  2. 递归下载网站(仅下载指定目录):wget -r -np -nH -k -L http://example.com/docs/
  3. 后台下载大文件:wget -b http://example.com/large.iso

curl命令

curl是一个功能强大的传输工具,支持多种协议(HTTP、HTTPS、FTP、SCP等),可与脚本结合使用,适合需要灵活处理HTTP请求的场景,其基本语法为curl [选项] [URL]

Unix下载文件有哪些常用命令?-图2
(图片来源网络,侵删)

核心参数选项:

  • -o:指定输出文件名,如curl -o image.jpg http://example.com/image.jpg
  • -O:使用URL中的文件名保存,如curl -O http://example.com/file.zip
  • -C -:断点续传,需配合-L处理重定向。
  • -L:跟随重定向,适用于短链接或跳转资源。
  • -u:设置用户名和密码,如curl -u username:password ftp://example.com/file.zip
  • -x:指定代理服务器,如curl -x proxy.example.com:8080 http://example.com
  • -s:静默模式,不显示进度和错误信息,适合脚本调用。
  • -I:仅获取HTTP头信息,用于检查资源状态。

示例场景:

  1. 下载文件并显示进度:curl -O http://example.com/file.zip
  2. 通过代理下载:curl -x proxy.example.com:8080 -o file.zip http://example.com/file.zip
  3. 结合脚本批量下载:for url in $(cat urls.txt); do curl -O $url; done

scp命令

scp(secure copy)基于SSH协议,用于在本地与远程主机之间安全传输文件,需目标主机开启SSH服务,其基本语法为scp [选项] [源路径] [目标路径]

核心参数选项:

Unix下载文件有哪些常用命令?-图3
(图片来源网络,侵删)
  • -P:指定SSH端口,如scp -P 2222 file.txt user@remote:/path/to/
  • -r:递归复制目录,如scp -r local_dir user@remote:/path/to/
  • -p:保留文件权限、时间戳等属性。
  • -C:启用压缩传输,适合大文件或目录。
  • -i:指定私钥文件,如scp -i ~/.ssh/id_rsa file.txt user@remote:/path/to/

示例场景:

  1. 从远程下载文件到本地:scp user@remote:/path/to/file.txt ./
  2. 上传本地文件到远程:scp file.txt user@remote:/path/to/
  3. 递归下载远程目录:scp -r user@remote:/path/to/remote_dir ./local_dir

sftp命令

sftp(SSH File Transfer Protocol)提供交互式文件传输界面,基于SSH加密,支持文件上传、下载、删除等操作,适合需要频繁管理远程文件的场景,启动后可通过命令行操作,如get(下载)、put(上传)、ls(列表)等。

示例操作流程:

sftp user@remote
sftp> get /remote/path/file.txt ./local_dir
sftp> put /local/path/file.txt /remote/path/
sftp> exit

ftp命令

ftp是传统的文件传输协议工具,支持匿名或认证登录,但数据传输未加密,安全性较低,适用于不敏感的文件传输,基本操作包括get(下载)、put(上传)、mget(批量下载)等。

示例操作流程:

ftp ftp.example.com
ftp> username
ftp> password
ftp> get file.txt
ftp> mget *.txt
ftp> quit

rsync命令

rsync主要用于文件同步和增量备份,支持本地与远程传输,可通过SSH加密,适合大文件或频繁更新的场景,其基本语法为rsync [选项] [源路径] [目标路径]

核心参数选项:

  • -a:归档模式,保留权限、时间戳等属性。
  • -v:显示详细传输过程。
  • -z:压缩传输数据。
  • -P:显示进度并支持断点续传。
  • --delete:删除目标目录中多余的文件。

示例场景:

  1. 同步本地目录到远程:rsync -avz local_dir/ user@remote:/path/to/
  2. 通过SSH同步远程文件到本地:rsync -avz -e ssh user@remote:/remote_dir/ ./local_dir/

命令对比与选择

以下表格总结了各命令的适用场景及特点:

命令 支持协议 核心特点 适用场景
wget HTTP/HTTPS/FTP 断点续传、递归下载、后台运行 网站爬取、批量下载、HTTP资源
curl 多协议 灵活HTTP处理、脚本友好 API调用、短链接解析、代理下载
scp SSH 安全加密、目录递归 远程服务器文件传输、敏感数据
sftp SSH 交互式操作、文件管理 远程文件维护、频繁上传下载
ftp FTP 匿名/认证登录、简单易用 不敏感文件传输、传统服务器
rsync 本地/远程 增量同步、高效备份 数据同步、定期备份、大文件传输

相关问答FAQs

Q1: wget和curl在下载文件时,哪个更适合脚本自动化?
A: curl更适合脚本自动化,因其提供更精细的HTTP请求控制(如自定义请求头、方法等),且-s静默模式可减少冗余输出;而wget更侧重于文件下载本身,递归和断点续传功能更强大,适合需要批量下载或离线下载的场景,调用API时推荐curl,下载整个网站时推荐wget。

Q2: 如何通过命令行下载需要用户认证的FTP文件?
A: 可使用wget或curl的认证参数,wget示例:wget --user=username --password=pass ftp://example.com/file.zip;curl示例:curl -u username:pass -o file.zip ftp://example.com/file.zip,若需安全传输,建议使用sftp(基于SSH)替代ftp,如sftp username@remote后使用get命令下载。

分享:
扫描分享到社交APP
上一篇
下一篇