打包,压缩解压,上传下载
在 Linux 系统中,“打包” 和 “压缩” 是两个相关但不同的概念:
- 打包:将多个文件 / 目录整合为一个单一文件(仅整合,不减小体积),核心工具是
tar。 - 压缩:对文件进行算法处理以减小体积(需特定压缩算法,如
gzip、bzip2、xz)。
实际使用中,通常会先打包再压缩(或直接用工具组合完成),以下是 Linux 中最常用的打包解压命令详解,按工具分类说明。
一、核心工具:tar(打包 + 压缩 / 解压)
tar 是 Linux 下最常用的打包工具,支持与多种压缩算法结合(通过选项指定),几乎所有 Linux 发行版默认预装。
1. 基本语法
tar [选项] 目标文件名.tar[.压缩后缀] 源文件/目录
2. 关键选项(必记)
| 选项 | 含义 | 常用场景 |
|---|---|---|
-c | 创建打包文件(即 “打包” 操作) | 配合 -f 生成新的 tar 包 |
-x | 提取文件(即 “解压” 操作) | 配合 -f 解压 tar 包 |
-v | 详细模式:显示打包 / 解压的文件列表 | 查看过程,排查问题 |
-f | 指定目标文件名(必须放在选项最后,紧跟文件名) | 所有 tar 命令的核心选项,不可省略 |
-z | 用 gzip 算法压缩 / 解压(对应后缀 .tar.gz 或 .tgz) | 压缩率中等,速度较快,最常用 |
-j | 用 bzip2 算法压缩 / 解压(对应后缀 .tar.bz2 或 .tbz2) | 压缩率略高于 gzip,速度稍慢 |
-J | 用 xz 算法压缩 / 解压(对应后缀 .tar.xz 或 .txz) | 压缩率最高,速度最慢,适合大文件 |
-C | 指定解压目录(解压时用,需目录已存在) | 避免解压到当前目录,整理文件 |
-t | 查看tar 包内的文件列表(不解压) | 确认包内内容,避免误操作 |
--exclude | 打包时排除指定文件 / 目录 | 过滤不需要打包的内容(如日志、缓存) |
3. 常用场景示例
(1)仅打包(不压缩,后缀 .tar)
将 docs/ 目录和 report.txt 文件打包为 archive.tar:
tar -cvf archive.tar docs/ report.txt
# 解释:-c(创建)、-v(详细)、-f(指定文件名)
(2)打包 + 压缩(3 种主流算法)
| 压缩算法 | 命令(打包 + 压缩) | 对应后缀 | 解压命令 |
|---|---|---|---|
| gzip | tar -zcvf archive.tar.gz docs/ report.txt | .tar.gz / .tgz | tar -zxvf archive.tar.gz |
| bzip2 | tar -jcvf archive.tar.bz2 docs/ report.txt | .tar.bz2 / .tbz2 | tar -jxvf archive.tar.bz2 |
| xz | tar -Jcvf archive.tar.xz docs/ report.txt | .tar.xz / .txz | tar -Jxvf archive.tar.xz |
示例:用 gzip 压缩
photos/目录为photos.tgz(.tgz是.tar.gz的简写):tar -zcvf photos.tgz photos/
(3)解压到指定目录
将 archive.tar.gz 解压到 /tmp/extract/ 目录(需先确保 /tmp/extract/ 存在):
# 1. 先创建目标目录(若不存在)
mkdir -p /tmp/extract/
# 2. 解压到指定目录
tar -zxvf archive.tar.gz -C /tmp/extract/
(4)查看 tar 包内容(不解压)
查看 archive.tar.bz2 内包含的文件:
tar -jtf archive.tar.bz2 # -j对应bzip2,-t查看,-f指定文件
(5)打包时排除指定文件
打包 project/ 目录,但排除 project/logs/(日志目录)和 project/*.tmp(临时文件):
tar -zcvf project.tar.gz --exclude=project/logs/ --exclude=project/*.tmp project/
二、跨平台工具:zip / unzip(压缩 / 解压)
zip 和 unzip 是跨平台的压缩工具(支持 Linux、Windows、macOS),默认生成 .zip 文件,兼容性强,但压缩率略低于 tar.xz。
1. 安装(部分系统默认未预装)
- Ubuntu/Debian:
sudo apt install zip unzip - CentOS/RHEL:
sudo yum install zip unzip - Fedora:
sudo dnf install zip unzip
2. 常用命令示例
(1)压缩文件 / 目录(zip)
| 需求 | 命令 | 说明 |
|---|---|---|
| 压缩单个文件 | zip file.zip document.txt | 将 document.txt 压缩为 file.zip |
| 压缩多个文件 | zip files.zip doc1.txt doc2.pdf img.jpg | 多个文件打包压缩为 files.zip |
| 压缩目录(含子目录) | zip -r dir.zip mydir/ | -r 表示递归压缩目录内所有内容 |
| 压缩时设置密码 | zip -P MyPass123 secure.zip secret.txt | -P 后接密码(注意:密码明文显示,不安全) |
| 显示压缩进度 | zip -v -r dir.zip mydir/ | -v 详细模式,显示压缩过程和进度 |
(2)解压文件(unzip)
| 需求 | 命令 | 说明 |
|---|---|---|
| 解压到当前目录 | unzip file.zip | 直接解压 file.zip 到当前工作目录 |
| 解压到指定目录 | unzip file.zip -d /tmp/unzip/ | -d 指定解压目录(需提前创建) |
| 查看 zip 包内容(不解压) | unzip -l file.zip | 列出 file.zip 内的所有文件 / 目录 |
| 解压带密码的 zip | unzip -P MyPass123 secure.zip | -P 后接密码(同样不建议明文输入,可省略让系统交互提示) |
| 强制覆盖已存在文件 | unzip -o file.zip | -o 强制覆盖,无需确认(默认会提示是否覆盖) |
| 安静模式解压(不显示输出) | unzip -q file.zip | -q 安静模式,仅在出错时显示信息 |
三、少见但需了解:rar / unrar(压缩 / 解压)
rar 是 Windows 下常用的压缩格式,Linux 默认不预装,需手动安装,适合处理来自 Windows 的 .rar 文件。
1. 安装
- Ubuntu/Debian:
sudo apt install rar unrar - CentOS/RHEL:需先启用 EPEL 源,再安装:
sudo yum install epel-release && sudo yum install rar unrar
2. 常用命令示例
| 操作 | 命令 | 说明 |
|---|---|---|
| 压缩目录 | rar a dir.rar mydir/ | a 表示 “添加” 文件到 rar 包(即压缩), -r 递归(默认启用) |
| 解压到当前目录 | unrar x dir.rar | x 保持原目录结构解压(推荐) |
| 解压到指定目录 | unrar x dir.rar /tmp/rar/ | 解压到 /tmp/rar/,保持目录结构 |
| 解压所有文件到当前目录(不保持结构) | unrar e dir.rar | e 扁平化解压,所有文件放在同一目录 |
| 查看 rar 包内容 | unrar l dir.rar | l 列出包内文件 |
四、常见压缩格式与命令对比表
| 压缩格式 | 特点 | 压缩命令 | 解压命令 | 查看内容命令 |
|---|---|---|---|---|
.tar | 仅打包,不压缩 | tar -cvf x.tar 源 | tar -xvf x.tar | tar -tvf x.tar |
.tar.gz/.tgz | gzip 压缩,速度快 | tar -zcvf x.tar.gz 源 | tar -zxvf x.tar.gz | tar -ztvf x.tar.gz |
.tar.bz2/.tbz2 | bzip2 压缩,率略高 | tar -jcvf x.tar.bz2 源 | tar -jxvf x.tar.bz2 | tar -jtvf x.tar.bz2 |
.tar.xz/.txz | xz 压缩,率最高 | tar -Jcvf x.tar.xz 源 | tar -Jxvf x.tar.xz | tar -Jtvf x.tar.xz |
.zip | 跨平台,兼容性强 | zip -r x.zip 源 | unzip x.zip -d 目录 | unzip -l x.zip |
.rar | Windows 常用,需安装 | rar a x.rar 源 | unrar x x.rar 目录 | unrar l x.rar |
五、注意事项
tar命令的-f位置:-f必须紧跟目标文件名,且放在所有选项的最后(如tar -zcvf 正确,tar -zfvc 错误)。- 权限问题:解压后文件的权限会保持压缩前的原始权限,若当前用户无权限访问,需用
chmod/chown调整。 - 损坏压缩包修复:
tar包:tar -zxvf x.tar.gz --ignore-zeros(忽略零字节块,尝试修复损坏部分)。zip包:unzip -F x.zip(轻度修复)或unzip -FF x.zip(强制修复)。
- 大文件处理:若压缩包超过 4GB,建议用
tar.xz或zip(需确保文件系统支持大文件,如 ext4、xfs)。
通过以上命令,可覆盖 Linux 中 99% 以上的打包解压场景,其中 tar 系列命令是必须熟练掌握的核心工具,zip/unzip 则适合跨平台文件传输。
tar命令
tar 是 Linux/Unix 系统中最核心的文件打包工具(全称 “tape archive”,最初用于磁带备份),本身仅负责 “打包”(将多个文件 / 目录合并为单一文件),但通过与不同压缩算法(如 gzip、bzip2、xz)结合,可实现 “打包 + 压缩” 一体化操作。其功能强大、用法灵活,是 Linux 系统管理中必须掌握的命令之一。
一、tar 命令的基本语法
tar [选项] [目标文件名.tar[.压缩后缀]] [源文件/目录...]
- 核心逻辑:通过选项指定 “操作类型”(打包 / 解压 / 查看)、“压缩算法”(若需),并指定目标文件和源文件。
二、核心选项详解(必记)
tar 的选项非常多,以下是日常使用中最核心的选项(按功能分类):
| 类别 | 选项 | 含义 | 常用场景 |
|---|---|---|---|
| 操作类型 | -c | 创建打包文件(即 “打包” 操作,对应英文 “create”) | 生成新的 tar 包时使用 |
-x | 提取文件(即 “解压” 操作,对应英文 “extract”) | 从 tar 包中解压文件时使用 | |
-t | 查看 tar 包内容(不解压,仅列出文件列表,对应英文 “list”) | 确认 tar 包内包含的文件 | |
| 压缩算法 | -z | 调用 gzip 算法进行压缩 / 解压(对应文件后缀 .tar.gz 或 .tgz) | 压缩率中等,速度较快(最常用) |
-j | 调用 bzip2 算法进行压缩 / 解压(对应后缀 .tar.bz2 或 .tbz2) | 压缩率略高于 gzip,速度稍慢 | |
-J | 调用 xz 算法进行压缩 / 解压(对应后缀 .tar.xz 或 .txz) | 压缩率最高,速度最慢(适合大文件) | |
| 辅助功能 | -f | 指定目标文件名(必须紧跟文件名,且通常放在选项最后) | 所有 tar 命令的 “必选” 选项 |
-v | 详细模式(显示操作过程中的文件列表,对应英文 “verbose”) | 查看打包 / 解压的具体文件 | |
-C | 指定解压目录(仅解压时使用,需目标目录已存在) | 避免解压到当前目录,整理文件 | |
-r | 向已存在的 tar 包中追加文件(仅对未压缩的 .tar 包有效) | 补充文件到已打包的 tar 中 | |
---exclude | 打包时排除指定文件 / 目录(支持通配符) | 过滤不需要打包的内容(如日志) | |
-p | 保留文件原始权限(解压时使用,默认会继承当前目录权限) | 恢复文件时保持原有权限 | |
-h | 跟随符号链接(打包时将符号链接指向的实际文件 / 目录打包,而非链接本身) | 处理符号链接时使用 |
三、常用场景与示例
1. 仅打包(不压缩,生成 .tar 文件)
功能:将多个文件 / 目录合并为一个 .tar 文件(体积不变,仅整合)。命令格式:tar -cvf 目标.tar 源文件/目录...
示例 1:将 file1.txt、file2.jpg 和 docs/ 目录打包为 archive.tar
tar -cvf archive.tar file1.txt file2.jpg docs/
# 输出:会列出所有被打包的文件(因 -v 选项)
示例 2:打包当前目录下所有 .sh 脚本(用通配符 *.sh)
tar -cvf scripts.tar *.sh
2. 打包 + 压缩(3 种主流算法)
tar 本身不压缩,但通过 -z/-j/-J 选项可调用对应压缩算法,实现 “打包 + 压缩” 一步完成。
| 压缩算法 | 命令(打包 + 压缩) | 生成文件后缀 | 特点(压缩率:xz > bzip2 > gzip;速度:gzip > bzip2 > xz) |
|---|---|---|---|
| gzip | tar -zcvf 目标.tar.gz 源文件/目录... | .tar.gz 或 .tgz | 平衡速度和压缩率,最常用 |
| bzip2 | tar -jcvf 目标.tar.bz2 源文件/目录... | .tar.bz2 或 .tbz2 | 压缩率略高,速度稍慢 |
| xz | tar -Jcvf 目标.tar.xz 源文件/目录... | .tar.xz 或 .txz | 压缩率最高,适合大文件(如备份),但压缩耗时最长 |
示例 1:用 gzip 压缩 data/ 目录为 data.tgz(.tgz 是 .tar.gz 的简写)
tar -zcvf data.tgz data/
示例 2:用 xz 压缩 large_file.iso 为 large_file.tar.xz(适合大文件)
tar -Jcvf large_file.tar.xz large_file.iso
3. 解压操作(从 tar 包提取文件)
命令格式:tar -[z/j/J]xvf 源.tar[.压缩后缀](根据压缩算法选择 -z/-j/-J,纯 tar 包无需)
示例 1:解压 .tar 包(无压缩)到当前目录
tar -xvf archive.tar # 无压缩,无需 -z/-j/-J
示例 2:解压 .tar.gz 包到当前目录
tar -zxvf data.tgz # -z 对应gzip算法
示例 3:解压 .tar.xz 包到指定目录 /opt/backup/(需先确保目录存在)
# 1. 先创建目标目录(若不存在)
mkdir -p /opt/backup/
# 2. 用 -C 指定解压目录
tar -Jxvf large_file.tar.xz -C /opt/backup/
示例 4:安静模式解压(不显示文件列表,仅操作)
tar -zxf data.tgz # 去掉 -v 即安静模式
4. 查看 tar 包内容(不解压)
命令格式:tar -[z/j/J]tvf 源.tar[.压缩后缀](-t 表示查看,配合对应压缩算法选项)
示例 1:查看 .tar.bz2 包内的文件列表
tar -jtf docs.tar.bz2 # -j 对应bzip2,-t 查看,-f 指定文件
示例 2:查看 .tar.gz 包中是否包含 readme.txt
tar -ztf archive.tar.gz | grep "readme.txt"
5. 打包时排除指定文件 / 目录
通过 --exclude 选项可过滤不需要打包的内容(支持通配符 *、? 等)。
示例 1:打包 project/ 目录,但排除 project/logs/(日志目录)和 *.tmp(临时文件)
tar -zcvf project.tar.gz --exclude=project/logs/ --exclude=*.tmp project/
示例 2:排除多个目录(用绝对路径更精准)
tar -jcvf backup.tar.bz2 --exclude=/home/user/.cache --exclude=/home/user/Downloads /home/user/
6. 向已存在的 tar 包追加文件(仅对未压缩的 .tar 有效)
注意:仅支持未压缩的 .tar 包(.tar.gz/.tar.bz2 等压缩包无法追加),用 -r 选项。
示例:向 archive.tar 中追加 new_file.pdf
tar -rvf archive.tar new_file.pdf # -r 表示追加
7. 保留文件权限解压(重要!)
默认情况下,解压文件的权限会继承当前目录的权限,若需保留压缩前的原始权限(如备份恢复场景),需加 -p 选项。
示例:解压 backup.tar.gz 并保留原始权限
tar -zxvpf backup.tar.gz # -p 保留权限
8. 处理符号链接(打包实际文件而非链接)
默认情况下,tar 会打包符号链接本身(而非链接指向的文件),若需打包链接指向的实际内容,加 -h 选项。
示例:打包 link_to_docs(符号链接)指向的实际目录
tar -zcvfh docs_link.tar.gz link_to_docs # -h 跟随符号链接
四、高级用法
1. 增量备份(仅打包新增 / 修改的文件)
结合 --newer 选项,可仅打包指定时间之后修改的文件(适合增量备份)。
示例:仅打包 /data/ 目录中 2025 年 11 月 1 日之后修改的文件
tar -zcvf incremental_backup.tar.gz --newer "2025-11-01" /data/
2. 拆分大 tar 包(适合存储到多个设备)
用 split 命令配合,可将大 tar 包拆分为指定大小的小文件(如 4GB 一个)。
示例:将 large.tar.xz 拆分为每个 4GB 的文件(命名为 part_aa、part_ab...)
split -b 4G large.tar.xz part_
还原拆分的包:先合并,再解压
cat part_* > large.tar.xz # 合并所有拆分文件
tar -Jxvf large.tar.xz # 解压
3. 修复损坏的 tar 包
若 tar 包部分损坏,可尝试用 --ignore-zeros 选项忽略零字节块(可能恢复部分文件)。
示例:修复损坏的 corrupted.tar.gz 并解压
tar -zxvf corrupted.tar.gz --ignore-zeros
五、常见错误与注意事项
-f选项的位置:-f必须紧跟目标文件名,且通常放在所有选项的最后(如tar -zcvf 正确,tar -zfvc 错误)。- 错误示例:
tar -zfv archive.tar.gz docs/(-f后未直接跟文件名,会报错)。 - 正确示例:
tar -zcvf archive.tar.gz docs/(-f后直接接archive.tar.gz)。
- 错误示例:
压缩后缀与选项对应:
.tar.gz/.tgz→ 必须用-z;.tar.bz2/.tbz2→ 必须用-j;.tar.xz/.txz→ 必须用-J;若选项与后缀不匹配,会报错 “无法识别的格式”。
权限不足:若打包 / 解压的文件涉及系统目录(如
/root/),需用sudo提升权限,否则会提示 “Permission denied”。避免覆盖文件:解压时若目标文件已存在,
tar会默认提示是否覆盖(y/n),若需强制覆盖且不提示,可加-o选项(tar -zxvfo archive.tar.gz)。
六、总结
tar 命令的核心是通过 -c(打包)、-x(解压)、-t(查看)三个操作选项,配合 -z/-j/-J(压缩算法)和 -f(指定文件)实现功能。日常使用中,最频繁的组合是:
- 打包 + gzip 压缩:
tar -zcvf 目标.tar.gz 源 - 解压 tar.gz:
tar -zxvf 源.tar.gz - 查看 tar 包内容:
tar -tvf 源.tar
上传和下载
在 Linux 中,文件的 “上传”(本地→远程)和 “下载”(远程→本地)通常指通过网络协议(如 SSH、FTP)或网络链接(HTTP/HTTPS)传输文件,常用工具包括 scp、sftp、rsync(基于 SSH)以及 wget、curl(网络下载)等。以下是详细介绍:
一、基于 SSH 的文件传输(最常用,适合服务器间 / 本地 - 服务器)
SSH 协议是 Linux 系统默认开启的远程管理协议,基于 SSH 的文件传输工具(scp、sftp、rsync)无需额外配置服务,直接使用服务器的 SSH 权限(用户名 + 密码或密钥)即可传输,安全性高。
1. scp(简单直接的 SSH 文件拷贝)
scp(secure copy)是基于 SSH 的文件拷贝工具,语法类似 cp,支持本地与远程、远程与远程之间的文件 / 目录传输,特点是 “一次命令完成传输”,适合简单场景。
基本语法
# 本地 → 远程
scp [选项] 本地文件/目录 远程用户@远程IP:远程路径# 远程 → 本地
scp [选项] 远程用户@远程IP:远程文件/目录 本地路径
核心选项
-r:递归传输目录(必须加,否则无法传输目录)。-P(大写):指定远程 SSH 端口(默认 22,若服务器端口非 22 需指定,如-P 2222)。-v:显示传输进度和详细信息(排查错误用)。-p:保留文件原始权限(如修改时间、权限等)。
示例
本地文件上传到远程:将本地
~/docs/report.pdf上传到远程服务器192.168.1.100的/home/user/files/目录(远程用户为ubuntu):scp ~/docs/report.pdf ubuntu@192.168.1.100:/home/user/files/回车后输入远程用户
ubuntu的密码(或密钥密码,若用密钥登录)。远程文件下载到本地:将远程服务器
192.168.1.100的/var/log/syslog下载到本地~/logs/目录:scp ubuntu@192.168.1.100:/var/log/syslog ~/logs/传输目录(必须加
-r):上传本地~/projects/目录到远程/home/user/backups/:scp -r ~/projects/ ubuntu@192.168.1.100:/home/user/backups/指定非默认 SSH 端口(如端口 2222)下载远程服务器(端口 2222)的
/data/file.tar.gz到本地当前目录:scp -P 2222 ubuntu@192.168.1.100:/data/file.tar.gz ./
2. sftp(交互式 SSH 文件传输)
sftp(secure FTP)是基于 SSH 的交互式文件传输工具,类似 FTP 的操作方式(支持cd、ls等目录操作),适合需要多次上传 / 下载、或需要先浏览远程目录再传输的场景。
基本用法
连接远程服务器:
sftp 远程用户@远程IP # 默认端口22 # 非默认端口:sftp -P 2222 远程用户@远程IP连接成功后进入
sftp>交互模式。常用交互命令
命令 作用 示例 ls [路径]列出远程目录文件(默认当前目录) ls /home/user/docscd 路径切换远程目录 cd /var/wwwlls [路径]列出本地目录文件(加 l表示 local)lls ~/downloadslcd 路径切换本地目录 lcd ~/downloadsput 本地文件上传本地文件到远程当前目录 put ~/report.txtput -r 本地目录递归上传本地目录(加 -r)put -r ~/photosget 远程文件下载远程文件到本地当前目录 get /var/log/nginx/access.logget -r 远程目录递归下载远程目录(加 -r)get -r /var/www/htmlrm 远程文件删除远程文件 rm old.txtexit或quit退出 sftp 交互模式 exit
示例
上传本地 ~/music/ 目录到远程 /home/user/media/,并下载远程 notes.txt 到本地 ~/docs/:
# 1. 连接远程服务器
sftp ubuntu@192.168.1.100# 2. 切换远程目标目录(上传到这里)
sftp> cd /home/user/media/# 3. 切换本地源目录(要上传的文件在这里)
sftp> lcd ~/music/# 4. 上传本地目录(递归)
sftp> put -r . # "." 表示当前本地目录的所有内容# 5. 下载远程文件到本地~/docs/
sftp> lcd ~/docs/ # 切换本地下载目录
sftp> get /home/user/notes.txt # 下载远程notes.txt# 6. 退出
sftp> exit
3. rsync(高效增量传输,适合备份)
rsync 是一款高效的文件同步工具,支持本地 / 远程同步,核心特点是增量传输(仅传输变化的文件),速度快、带宽占用低,适合大量文件或频繁备份场景(配合crontab可实现定时备份)。
基本语法(远程传输)
# 本地 → 远程(同步本地目录到远程)
rsync [选项] 本地目录/ 远程用户@远程IP:远程目录/# 远程 → 本地(同步远程目录到本地)
rsync [选项] 远程用户@远程IP:远程目录/ 本地目录/
核心选项(必记)
-a:归档模式(最常用),等价于-rlptgoD,即递归传输目录、保留权限、时间戳、所有者等(几乎必加)。-v:显示传输过程的详细信息。-z:传输时压缩数据(节省带宽,适合网络传输)。--progress:显示每个文件的传输进度(百分比、速度等)。-P:等价于--partial --progress,支持断点续传(传输大文件中断后,下次可继续)。--delete:删除目标目录中 “源目录没有” 的文件(保持完全一致,谨慎使用!)。
示例
同步本地目录到远程(增量传输)将本地
~/data/目录同步到远程192.168.1.100的/backup/data/,显示进度并压缩传输:rsync -avz --progress ~/data/ ubuntu@192.168.1.100:/backup/data/(注意:本地目录后加
/表示 “传输目录内的内容”,不加则传输目录本身,根据需求选择)。从远程同步到本地(断点续传大文件)下载远程
/large_files/video.iso到本地~/downloads/,支持断点续传并显示进度:rsync -avzP ubuntu@192.168.1.100:/large_files/video.iso ~/downloads/保持两地目录完全一致(谨慎!)让本地
~/web/与远程/var/www/完全一致(删除本地多出的文件):rsync -avz --delete ubuntu@192.168.1.100:/var/www/ ~/web/(
--delete会删除本地~/web/中远程没有的文件,建议先不加该选项测试)。
二、从网络下载文件(HTTP/HTTPS/FTP)
如果文件位于网络地址(如官网下载链接、FTP 服务器),常用 wget 和 curl 工具下载,无需远程服务器账号,直接通过 URL 获取。
1. wget(专注下载的工具)
wget 是 Linux 默认预装的下载工具,支持 HTTP、HTTPS、FTP 协议,特点是支持断点续传、后台下载,适合大文件。
常用选项
-O 文件名:指定下载后的文件名(默认用 URL 中的文件名)。-c:断点续传(文件下载中断后,继续下载未完成部分)。-b:后台下载(适合 SSH 连接中下载大文件,断开连接不影响)。-P 目录:指定下载到哪个目录(默认当前目录)。
示例
下载文件到当前目录(默认文件名):
wget https://example.com/software.tar.gz指定下载文件名和目录:下载到
~/tools/目录,并重命名为app.tar.gz:wget -O ~/tools/app.tar.gz https://example.com/software.tar.gz断点续传大文件:
wget -c https://example.com/large_file.iso后台下载并记录日志:
wget -b -o download.log https://example.com/big.zip # 日志保存在download.log,可用tail -f download.log查看进度
2. curl(多功能工具,支持下载 / 上传)
curl 是一款功能更全面的网络工具(不仅用于下载),支持 HTTP、HTTPS、FTP 等,还能发送 API 请求、模拟表单提交等。下载文件时需要显式指定输出文件。
下载常用选项
-o 文件名:指定下载后的文件名(小写 o)。-O:使用 URL 中的文件名保存(大写 O,默认)。-C -:断点续传(与 wget 的-c类似)。
示例
下载文件并指定名称:
curl -o app.tar.gz https://example.com/software.tar.gz用 URL 原名保存:
curl -O https://example.com/software.tar.gz # 保存为software.tar.gz断点续传:
curl -C - -O https://example.com/large_file.iso下载需要登录的文件(带 Cookie):某些网站需要登录后才能下载,可通过
-b携带 Cookie:curl -b "session_id=xxx" -O https://example.com/private/file.zip
三、工具对比与选择建议
| 工具 | 适用场景 | 优势 | 不足 |
|---|---|---|---|
scp | 简单的单文件 / 目录传输(本地 - 远程) | 语法简单,一次命令完成 | 不支持增量传输,大文件重传效率低 |
sftp | 交互式多次上传 / 下载,需浏览远程目录 | 支持目录导航,操作灵活 | 不适合脚本自动化(交互式) |
rsync | 大量文件、频繁同步、备份(增量传输) | 增量传输,速度快,支持断点续传 | 语法稍复杂,需注意目录末尾的/ |
wget | 从网络 URL 下载文件(HTTP/HTTPS/FTP) | 专注下载,支持后台、断点续传 | 功能单一,仅支持下载 |
curl | 网络下载、API 请求、表单提交等多功能场景 | 功能全面,支持多种协议和请求方式 | 下载时需手动指定输出文件 |
根据场景选择:
- 简单传输单个文件 / 目录 → 用
scp; - 需要多次交互操作 → 用
sftp; - 备份、大量文件或增量同步 → 用
rsync; - 从网络链接下载 → 优先
wget(简单),复杂场景(如带 Cookie)用curl。
