Skip to content

tar 命令:归档和压缩文件

1. 简介

tar 命令是 "tape archive" 的缩写,最初用于在磁带上创建档案。现在,它主要用于创建和操作归档文件,通常与压缩工具结合使用。tar 可以将多个文件和目录打包成一个文件,并可选择性地进行压缩。

2. 基本语法

bash
tar [选项] [归档文件名] [文件或目录...]

3. 常用选项

  • -c:创建新的归档文件
  • -x:从归档文件中提取文件
  • -v:详细模式,显示处理的文件
  • -f:指定归档文件名
  • -z:使用 gzip 压缩
  • -j:使用 bzip2 压缩
  • -t:列出归档文件的内容
  • -C:切换到指定目录

4. 基础使用示例

  1. 创建 tar 归档:

    bash
    tar -cvf archive.tar file1 file2 dir1
  2. 创建压缩的 tar 归档(.tar.gz):

    bash
    tar -czvf archive.tar.gz dir1
  3. 解压 tar 归档:

    bash
    tar -xvf archive.tar
  4. 解压 gzip 压缩的 tar 归档:

    bash
    tar -xzvf archive.tar.gz

5. 进阶使用技巧

  1. 查看归档内容而不解压:

    bash
    tar -tvf archive.tar
  2. 添加文件到已存在的归档:

    bash
    tar -rvf archive.tar newfile
  3. 使用通配符:

    bash
    tar -czvf archive.tar.gz *.txt
  4. 排除特定文件或目录:

    bash
    tar -czvf archive.tar.gz --exclude='*.log' directory

6. 实用示例

  1. 备份整个目录:

    bash
    tar -czvf backup-$(date +%F).tar.gz /path/to/directory
  2. 解压到指定目录:

    bash
    tar -xzvf archive.tar.gz -C /target/directory
  3. 创建增量备份:

    bash
    tar -czvf incremental.tar.gz --listed-incremental=snapshot.file directory
  4. 使用管道传输文件:

    bash
    tar -cvf - files | ssh user@host "cd /target && tar -xvf -"

7. 注意事项

  • 创建归档时要小心,避免无意中包含敏感文件。
  • 解压之前,最好先查看归档内容,以防意外覆盖现有文件。
  • 大文件的压缩和解压可能需要较长时间。

8. 相关命令

  • gzipgunzip:用于 gzip 压缩和解压
  • bzip2bunzip2:用于 bzip2 压缩和解压
  • zipunzip:用于 ZIP 格式的压缩和解压
  • 7z:7-Zip 压缩工具

9. 技巧与建议

  1. 使用进度条显示压缩进度:

    bash
    tar -czf - directory | pv > archive.tar.gz
  2. 在解压前测试归档完整性:

    bash
    tar -tzf archive.tar.gz
  3. 结合 find 命令使用:

    bash
    find . -name "*.jpg" -print0 | tar -czvf images.tar.gz --null -T -
  4. 创建分卷压缩文件:

    bash
    tar -czvf - directory | split -b 1G - archive.tar.gz.

tar 命令是 Linux 系统中最常用的归档和压缩工具之一。它不仅可以将多个文件和目录打包成一个文件,还可以与不同的压缩算法结合使用,创建各种压缩格式的归档文件。掌握 tar 命令对于文件备份、数据传输和系统管理都非常重要。通过灵活运用 tar,你可以更有效地管理和传输大量文件和目录。