如何创建根目录含指定目录与隐藏文件的tar.xz归档文件
解决tar.xz归档根目录仅包含指定内容的问题
我完全懂你这种反复尝试却没得到想要结果的烦躁——其实核心就是要让tar命令的工作目录精准定位到dir1内部,这样打包出来的内容就不会带上外层的dir1或者当前目录。下面给你两种靠谱的解决方案:
方案1:切换到目标目录后打包
这是最直观的方式,先进入dir1再直接打包内部内容:
cd dir1 && tar -cJf ../archive.tar.xz dir2 .hiddenFile
cd dir1:切换到dir1目录后,dir2和.hiddenFile就成了当前目录的直接子项tar -cJf ../archive.tar.xz:创建xz压缩的tar归档,把归档文件存到dir1的上级目录,避免不小心把归档文件本身也打包进去dir2 .hiddenFile:明确指定要打包的两个内容,确保隐藏文件不会被遗漏
方案2:用-C参数指定工作目录(无需切换目录)
如果不想改变当前终端的工作目录,可以用tar的-C参数让它临时切换到dir1再执行打包:
tar -cJf archive.tar.xz -C dir1 dir2 .hiddenFile
-C dir1:告诉tar先切换到dir1目录,再处理后面的文件/目录- 后面的
dir2和.hiddenFile是相对于dir1的路径,所以归档后它们会直接出现在归档的根目录下
避坑提醒
- 别直接执行
tar -cJf archive.tar.xz dir1:这样归档的根目录会是dir1,里面才包含dir2和.hiddenFile,完全不符合你的需求 - 别用
dir1/*代替显式指定:通配符*默认不会匹配以.开头的隐藏文件,会直接漏掉.hiddenFile
验证方法
打包完成后,用下面的命令查看归档内容,确认结构是否正确:
tar -tf archive.tar.xz
正常输出应该只显示dir2/(及其子目录和文件)和.hiddenFile,不会出现外层的dir1或.目录。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

