Linux 命令:tar

一、tar 命令概述
  • tar 是 Linux 系统中用于打包和压缩文件的常用命令,全称是 “tape archive”,最初用于磁带备份,现在广泛用于文件归档和分发。
  • 它可以将多个文件或目录打包成一个文件,同时支持多种压缩格式,是系统管理和文件传输中不可或缺的工具。
  • 资料已经分类整理好:https://pan.quark.cn/s/26d73f7dd8a7
二、tar 命令基本语法
tar [选项] [归档文件名] [文件或目录列表]

核心选项说明(常用选项需熟记,括号内为短选项):

  • 归档操作
    • -c(–create):创建新的归档文件
    • -x(–extract):从归档文件中提取文件
    • -t(–list):查看归档文件内容列表
  • 压缩格式
    • -z(–gzip):使用 gzip 压缩(.tar.gz 或 .tgz)
    • -j(–bzip2):使用 bzip2 压缩(.tar.bz2)
    • -J(–xz):使用 xz 压缩(.tar.xz)
    • -Z(–compress):使用 compress 压缩(.tar.Z,已过时)
  • 辅助选项
    • -v(–verbose):显示详细处理过程
    • -f(–file):指定归档文件名(必须紧跟在选项后)
    • -C(–directory):切换目录(提取时常用)
    • -p(–preserve-permissions):保留文件权限
    • -P(–absolute-names):保留绝对路径(慎用,可能导致安全问题)
    • -h(–dereference):打包时跟随符号链接指向的实际文件
    • --exclude=PATTERN:排除指定模式的文件或目录
三、tar 命令常用场景及示例
1. 创建归档文件(不压缩)
# 将目录 documents 打包为 documents.tar
tar -cf documents.tar documents/

# 打包多个文件和目录
tar -cf files.tar file1.txt file2.txt directory1/ directory2/

# 显示详细打包过程
tar -cvf files.tar file1.txt file2.txt
2. 压缩归档文件(常用格式)
  • .tar.gz 格式(gzip 压缩)

    # 打包并压缩目录为 archive.tar.gz
    tar -czf archive.tar.gz directory/
    
    # 压缩时显示详细信息
    tar -czvf archive.tar.gz file1 file2
    
  • .tar.bz2 格式(bzip2 压缩,压缩率更高)

    tar -cjf archive.tar.bz2 directory/
    
  • .tar.xz 格式(xz 压缩,现代高效压缩)

    tar -cJf archive.tar.xz directory/
    
3. 提取归档文件
# 从 archive.tar 提取到当前目录
tar -xf archive.tar

# 从 archive.tar.gz 提取(自动识别压缩格式)
tar -xzf archive.tar.gz

# 提取到指定目录(-C 选项)
tar -xzf archive.tar.gz -C /path/to/extract/

# 提取时显示详细信息
tar -xzvf archive.tar.gz
4. 查看归档文件内容
# 查看 tar 包中的文件列表
tar -tf archive.tar

# 查看压缩包内容(自动识别格式)
tar -tzf archive.tar.gz
5. 增量备份与排除文件
  • 排除指定文件或目录

    # 打包时排除 .log 文件和 temp 目录
    tar -czf backup.tar.gz --exclude="*.log" --exclude="temp/" /data/
    
  • 基于修改时间的增量备份

    # 只备份 24 小时内修改过的文件
    tar -czf daily_backup.tar.gz --mtime="1 day ago" /data/
    
6. 保留文件属性
# 打包时保留权限、所有者等属性
tar -cpzf backup.tar.gz --preserve-permissions /etc/
7. 处理符号链接
# 打包时包含符号链接本身(默认行为)
tar -cf links.tar link1 link2

# 打包时跟随符号链接指向的实际文件
tar -chf real_files.tar link1 link2
四、高级用法与技巧
1. 分卷压缩(适用于大文件传输)
# 将大文件分卷为 500MB 每卷(.tar.gz 格式)
tar -czf - directory/ | split -b 500M - part_archive.

# 合并分卷并解压
cat part_archive.* | tar -xzf -
2. 增量备份(仅备份变化的文件)
# 首次全量备份
tar -czf full_backup.tar.gz /data/

# 后续增量备份(使用 --newer 选项)
tar -czf incremental_backup.tar.gz --newer "full_backup.tar.gz" /data/
3. 压缩时排除临时文件
# 使用通配符排除临时文件(如 ~ 结尾、.swp 等)
tar -czf project.tar.gz --exclude="*~" --exclude="*.swp" project/
4. 与其他命令结合使用
# 压缩当前目录下所有 .log 文件并输出到标准输出
find . -name "*.log" | tar -czf - -T - > logs.tar.gz

# 解压并替换已有文件(--overwrite 选项)
tar -xzf new_files.tar.gz --overwrite
五、常见错误与注意事项
  1. 路径问题

    • 打包时建议使用相对路径,避免解压时覆盖系统文件(如 tar -czf /backup.tar.gz / 是危险操作)
    • 使用 -C 选项指定解压目录,避免文件散落在当前目录
  2. 压缩格式选择

    • .tar.gz 兼容性最好,适合通用场景
    • .tar.xz 压缩率最高,但压缩/解压速度较慢,适合存储备份
    • .tar.bz2 压缩率介于两者之间,速度适中
  3. 权限问题

    • 解压 root 打包的文件时可能会生成 root 权限的文件,建议使用 --preserve-permissions 明确权限策略
  4. 安全提示

    • 避免解压不明来源的 tar 包,尤其是包含绝对路径(-P 选项)的文件
    • 压缩前检查文件列表,避免包含敏感信息(如 ~/.ssh 等)
六、快速参考表格
操作类型命令示例说明
创建普通归档tar -cf archive.tar file1 file2打包文件为 archive.tar
创建 gzip 归档tar -czf archive.tar.gz dir/打包并压缩为 tar.gz 格式
提取归档tar -xzf archive.tar.gz -C /path解压到指定目录
查看归档内容tar -tzf archive.tar.gz列出压缩包中的文件
排除文件tar -czf backup.tar.gz --exclude="*.log" /data打包时排除 .log 文件
保留权限tar -cpzf etc_backup.tar.gz /etc备份时保留文件权限
分卷压缩`tar -czf - dir/split -b 1G - part_`

通过以上示例和说明,你可以全面掌握 tar 命令的使用方法。在实际应用中,根据需求选择合适的压缩格式和选项,注意路径和权限管理,即可高效完成文件归档和备份任务。如果遇到复杂场景,建议查阅 man tar 获取更多详细选项说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值