Tarring文件排除了我想要tar的文件夹之前的路径

时间:2013-05-05 17:42:47

标签: linux bash terminal tar

我试图tar一组子文件夹,然后通过ruby脚本tar其父文件夹。

结构如下:

/x/y/z/ParentFolder/Subfolder1
/x/y/z/ParentFolder/Subfolder2
/x/y/z/ParentFolder/Subfolder3
/x/y/z/ParentFolder/Subfolder4

所以我最终想要的是Subfolder1.tar.gz,Subfolder2.tar.gz,Subfolder3.tar.gz,Subfolder4.tar.gz都包含在ParentFolder.tar.gz中。

我目前的问题是我能够使用其子文件夹tar父文件夹,但它的结构仍为/ x / y / z / ParentFolder / SubFolder1 ---- 4

tarParentFolder = "tar -zcvf /x/y/z/ParentFolder.tar.gz /x/y/z/ParentFolder 2>/dev/null"

`#{tarParentFolder}`

我已经四处寻找,但似乎无法找到解决方案,

有人有任何想法吗?

由于

2 个答案:

答案 0 :(得分:2)

如何使路径相对于正确的路径的答案是使用-C tar选项。这是一个大写字母C.您传递的参数是您希望tar从中开始相对的目录。

所以你会这样做:

tar -zcvf /x/y/z/ParentFolder.tar.gz -C /x/y/z ParentFolder

但是......你也应该三思而后行。你应该没问题,只需要包含dir。

答案 1 :(得分:1)

要创建包含多个文件/文件夹的tar存档,请使用以下命令:

$ mkdir f1 f2
$ tar -czf tar.tgz f1 f2 # creates the tar
$ tar -tzf tar.tgz       # lists tar contents
f1/
f2/
f3/
$

所以你应该写一些类似的东西:

tar -zcvf /x/y/z/ParentFolder.tar.gz /x/y/z/Subfolder{1,2,3,4}