Linux从入门到精通如何使用`tar`命令压缩/解压文件,并排除特定目录?

作者:IT技术圈子 阅读:1 日期:2025年09月26日

在Linux中,`tar`命令是归档和压缩文件的强大工具,支持排除特定目录。以下是详细指南:

# 打包并用gzip压缩(.tar.gz) tar -czvf archive.tar.gz /path/to/dir_or_file

# 打包并用bzip2压缩(.tar.bz2) tar -cjvf archive.tar.bz2 /path/to/dir_or_file ``` 参数说明:

  • `-c`:创建归档
  • `-v`:显示过程(可选)
  • `-f`:指定文件名
  • `-z`:使用gzip
  • `-j`:使用bzip2

2. 解压文件 ```bash # 解压.tar tar -xvf archive.tar

# 解压.tar.gz tar -xzvf archive.tar.gz

# 解压到指定目录 tar -xzvf archive.tar.gz -C /target/directory ``` 参数说明:

  • `-x`:解压
  • `-C`:指定目标目录

1. 排除单个目录 ```bash tar -czvf archive.tar.gz --exclude='dir_to_exclude' /path/to/source ```

2. 排除多个目录 ```bash tar -czvf archive.tar.gz \ --exclude='dir1' \ --exclude='dir2' \ /path/to/source ```

3. 使用通配符排除 ```bash # 排除所有cache目录 tar -czvf archive.tar.gz --exclude='*.cache' /path/to/source

# 排除特定模式的文件 tar -czvf archive.tar.gz --exclude='*.tmp' /path/to/source ```

4. 从文件读取排除列表 创建排除规则文件(如 `exclude.txt`): ``` dir_to_exclude *.log temp/* ``` 然后执行: ```bash tar -czvf archive.tar.gz -X exclude.txt /path/to/source ```

2. 增量备份(仅打包修改过的文件) ```bash tar -czvf backup.tar.gz -g /path/to/snapshot.file /path/to/source ```

3. 处理绝对路径(避免归档根目录) ```bash tar -czvf archive.tar.gz -C /path/to/source . ```

2. 压缩率对比:

  • `gzip`(`.gz`):速度快,压缩率一般。
  • `bzip2`(`.bz2`):速度慢,压缩率更高。
  • `xz`(`.xz`):更高压缩率(用法:`-J` 参数)。

3. 保留文件属性:

  • 默认保留权限、时间戳等,如需强制保留,添加 `-p` 参数。

# 解压时排除文件 tar -xzvf archive.tar.gz --exclude='unwanted_dir' ```

通过灵活组合参数,`tar`可以满足大多数归档需求。建议通过 `man tar` 查看完整手册。

  END