tar 是 Linux/Unix 系统中最常用的压缩与解压工具之一,支持 .tar、.tar.gz、.tar.bz2、.tar.xz 等多种格式。下面是常用命令总结👇
tar -cvf archive.tar /path/to/files
说明:
-c:创建新的归档文件(create)-v:显示详细过程(verbose)-f:指定归档文件名(file)
📦 示例:tar -cvf backup.tar /home/user/docs
.tar.gz 或 .tgz)tar -zcvf archive.tar.gz /path/to/files
说明:
-z:通过 gzip 压缩📦 示例:
tar -zcvf backup.tar.gz /home/user/docs
.tar.bz2)tar -jcvf archive.tar.bz2 /path/to/files
说明:
-j:通过 bzip2 压缩📦 示例:
tar -jcvf backup.tar.bz2 /home/user/docs
.tar.xz)tar -Jcvf archive.tar.xz /path/to/files
说明:
-J:通过 xz 压缩📦 示例:
tar -Jcvf backup.tar.xz /home/user/docs
.tartar -xvf archive.tar
.tar.gz 或 .tgztar -zxvf archive.tar.gz
.tar.bz2tar -jxvf archive.tar.bz2
.tar.xztar -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=[排除路径]
tar -czf project.tar.gz ./project --exclude=./project/node_modules
👉 把 project 文件夹打包成 project.tar.gz,但不包括其中的 node_modules。
bash复制代码tar -czf backup.tar.gz ./myapp \
--exclude=./myapp/logs \
--exclude=./myapp/tmp \
--exclude=./myapp/.git
tar -czf src.tar.gz ./src --exclude='*.log' --exclude='*.tmp'
👉 排除所有 .log 和 .tmp 文件。
注意:通配符应加引号
'*.log',防止被 shell 提前展开。
如果要排除的内容很多,可以将它们写入一个文件,比如 exclude.txt:
exclude.txt 内容:
node_modules
.git
*.log
然后执行:
tar -czf project.tar.gz ./project --exclude-from=exclude.txt
如果你用的是相对路径,--exclude 的路径也要保持相对路径的一致性。
例如当前目录是 /home/user:
tar -czf app.tar.gz app --exclude=app/tmp
如果使用绝对路径,需要加 /,例如:
tar -czf app.tar.gz /home/user/app --exclude=/home/user/app/tmp
node_modulestar --exclude='*/node_modules' -czf frontend.tar.gz ./frontend
📘 说明:
--exclude='*/node_modules' 会匹配任意路径下的 node_modules 文件夹(包括子目录里的)。frontend.tar.gz 是打包生成的压缩包名。./frontend 是你要打包的项目根目录。tar --exclude-from=./cl_luo_front/exclude.txt -zcvf cl_luo_front_20251206.tar.gz cl_luo_front