如何使用tar命令打包目录,使解压后保留原目录?
打包目录并保留解压后的目录结构
我需要打包一个目录,确保解压后该目录本身仍存在——因为有一份无法修改的预编写安装脚本依赖这个目录结构,解压结果必须仅包含该目录。
问题场景:
我执行了以下打包命令:
tar -czvf filename.tar.gz directory
查看tar文件内部,可见内容路径为:
./directory/file1 ./directory/file2
但执行解压命令:
tar -xvf filename.tar.gz
后,并没有得到directory目录,仅生成了:
./file1 ./file2
预期解压结果应该是直接生成directory目录,内部包含对应文件。
解决方案:
问题出在打包时的路径指定方式,你需要确保打包时保留目录的顶层结构,正确的做法是使用-C参数切换到目标目录的上级路径,再指定要打包的目录名:
假设你的目标目录directory位于当前工作目录下,执行以下命令打包:
tar -czvf filename.tar.gz -C ./ directory
或者,如果你当前在directory的上级目录中,直接执行:
tar -czvf filename.tar.gz directory
这样打包后的tar文件内部路径会是directory/file1、directory/file2,解压后就会直接生成完整的directory目录,符合安装脚本的依赖要求。
内容的提问来源于stack exchange,提问作者Jim_Brent
相关产品推荐
相关产品推荐

