tar 是一个常用的打包工具,其中 -C 参数会影响打包结果的目录结构。
本文将通过几个例子,解释这个参数的作用。
1. 基本概念
tar 命令的 -C 参数用于切换目录,会改变打包时的相对路径。
2.目录结构示例
假设有以下目录结构:
project/
└── target
└── x86_64-apple-darwin
└── release
└── cli
3. 不使用 -C 参数
执行以下命令:
tar -czf output.tar.gz target/x86_64-apple-darwin/release/cli
解压后的结构:
target/
└── x86_64-apple-darwin/
└── release/
└── cli
这种方式会保留完整的目录层级。
4. 使用 -C 参数
执行以下命令:
tar -czf output.tar.gz -C target/x86_64-apple-darwin/release cli
解压后的结构:
cli
使用 -C 参数后,tar 会:
- 先切换到指定目录
- 再从该目录开始打包文件
5. 实际应用
5.1 发布二进制文件
在发布软件时,通常使用 -C 参数:
- 压缩包更小
- 用户体验更好
- 解压即用
5.2 备份文件
备份时通常不使用 -C 参数:
- 保留原始目录结构
- 便于恢复到原始位置
- 保持文件关系完整
6. 总结
- 不带 -C:保留完整路径,适合备份
- 带 -C:仅打包指定文件,适合发布