> 技术文档 > Linux 命令:tar_linux tar命令

Linux 命令:tar_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.tartar -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.gztar -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 获取更多详细选项说明。