Linux tar 打包与解压:文件、目录和 gzip 压缩示例
tar 将多个文件和目录保存为一个归档;加上 -z 后使用 gzip 压缩,常见扩展名为 .tar.gz 或 .tgz。本文的 -f 打包示例需要同时写出归档输出文件名和要打包的输入路径;从标准输入读取文件列表或向标准输出写归档属于其他用法。
| 参数 | 含义 |
|---|---|
-c | 创建归档 |
-v | 显示正在处理的文件 |
-f | 后面的参数是归档文件名 |
-z | 使用 gzip 压缩或解压 |
-t | 列出归档内容 |
-x | 解出归档内容 |
-C | 切换到指定目录后处理后续路径,注意大写 |
打包文件或目录
假设当前目录已经有 project/,分别演示不压缩和 gzip 压缩。运行前确认输出文件不存在,避免覆盖已有备份:
sh
tar -cvf project.tar project/
tar -zcvf project.tar.gz project/也可以一次打包多个输入,例如 tar -cvf documents.tar README.md docs/。将输出归档放在待打包目录之外,避免把归档本身包含进输入。
只打包目录中的内容、不保留最外层 project/ 路径时:
sh
tar -zcvf project-contents.tar.gz -C project .查看内容再解压
sh
tar -tvf project.tar
tar -tzvf project.tar.gz先检查内部路径、文件名和符号链接是否符合预期。解压会写入文件,已有同名文件可能被覆盖;不熟悉的归档先解压到新目录,不要直接用 root 解到系统路径。
sh
mkdir -p extracted
tar -zxvf project.tar.gz -C extracted如果归档中包含 project/,结果位于 extracted/project/;如果创建时用了 -C project .,内容则直接位于 extracted/。对于未压缩的 .tar,使用 tar -xvf project.tar -C extracted。
命令完成后查看退出状态及目标目录:退出状态非零、出现权限错误或磁盘空间不足时,不应把部分解压当成完整成功。