Leonurus-free

压缩解压

tar 是 Linux/Unix 系统中最常用的压缩与解压工具之一,支持 .tar.tar.gz.tar.bz2.tar.xz 等多种格式。下面是常用命令总结👇


🗜 一、压缩命令

1️⃣ 仅打包(不压缩)

tar -cvf archive.tar /path/to/files

说明:

tar -cvf backup.tar /home/user/docs

2️⃣ 打包并使用 gzip 压缩(常见:.tar.gz.tgz

tar -zcvf archive.tar.gz /path/to/files

说明:

📦 示例:

tar -zcvf backup.tar.gz /home/user/docs

3️⃣ 打包并使用 bzip2 压缩(.tar.bz2

tar -jcvf archive.tar.bz2 /path/to/files

说明:

📦 示例:

tar -jcvf backup.tar.bz2 /home/user/docs

4️⃣ 打包并使用 xz 压缩(.tar.xz

tar -Jcvf archive.tar.xz /path/to/files

说明:

📦 示例:

tar -Jcvf backup.tar.xz /home/user/docs

📂 二、解压命令

1️⃣ 解压 .tar

tar -xvf archive.tar

2️⃣ 解压 .tar.gz.tgz

tar -zxvf archive.tar.gz

3️⃣ 解压 .tar.bz2

tar -jxvf archive.tar.bz2

4️⃣ 解压 .tar.xz

tar -Jxvf archive.tar.xz

📁 三、常用附加选项

参数 说明
-C /path/to/dir 指定解压路径
--exclude='pattern' 排除文件或目录
-t 列出压缩包内容(不解压)

📦 示例:

# 解压到指定目录
tar -zxvf backup.tar.gz -C /home/user/restore

# 查看压缩包内容
tar -tvf backup.tar.gz

# 压缩时排除 node_modules
tar -zcvf project.tar.gz my_project --exclude='node_modules'

排除指定文件夹或者文件

在使用 tar 打包时,可以通过 --exclude 参数来排除指定的文件或文件夹。 语法如下:

tar -czf archive.tar.gz [源路径] --exclude=[排除路径]

✅ 常见用法示例

1. 排除单个文件夹

tar -czf project.tar.gz ./project --exclude=./project/node_modules

👉 把 project 文件夹打包成 project.tar.gz,但不包括其中的 node_modules


2. 排除多个文件或文件夹

bash复制代码tar -czf backup.tar.gz ./myapp \
  --exclude=./myapp/logs \
  --exclude=./myapp/tmp \
  --exclude=./myapp/.git

3. 使用通配符排除

tar -czf src.tar.gz ./src --exclude='*.log' --exclude='*.tmp'

👉 排除所有 .log.tmp 文件。

注意:通配符应加引号 '*.log',防止被 shell 提前展开。


4. 从文件中读取排除列表

如果要排除的内容很多,可以将它们写入一个文件,比如 exclude.txt

exclude.txt 内容:

node_modules
.git
*.log

然后执行:

tar -czf project.tar.gz ./project --exclude-from=exclude.txt

5. 排除相对路径或绝对路径的注意事项


递归排除所有 node_modules

tar --exclude='*/node_modules' -czf frontend.tar.gz ./frontend

📘 说明:

tar --exclude-from=./cl_luo_front/exclude.txt -zcvf cl_luo_front_20251206.tar.gz cl_luo_front