Tar多个文件和文件夹,并指定存档结构

时间:2014-06-20 00:05:36

标签: linux tar

我正在开发一个程序更新机制,它基本上使用PHP脚本来查找一组文件的最新版本,并创建这些文件的tar存档。

因此,存档的文件列表可能类似于:

/updates/0.5.1/fileOne
/updates/0.5.1/fileTwo
/updates/0.5.2/folderOne/fileThree
/updates/0.5.3/folderOne/fileFour

我要做的是将列表中的所有文件都放到tar存档中,但需要注意的是版本文件夹后的目录结构(例如0.5.1 /。 ..)必须保持。因此,如果所有这些文件都放在存档中,则存档结构应为:

/fileOne
/fileTwo
/folderOne/fileThree
/folderOne/fileFour

我尝试使用tar cvf ...完整路径,但最终的归档结构只是反映了我放入的内容(/ updates /...).

有关如何执行此操作的任何建议?谢谢!

2 个答案:

答案 0 :(得分:1)

将路径名拆分为版本前缀,其余部分。然后做:

tar rv -C "$prefix" -f "$tarfile" "$rest"

-C $prefix选项在归档cd $prefix之前执行$rest,因此您只获得相对于该目录的路径名。

使用r选项代替c,{{1}}附加到现有存档,而不是从头创建新存档。这将允许您遍历所有文件名,获取每个前缀,并将它们添加到存档。

答案 1 :(得分:0)

如何将dir更改为/ updates,然后将每个目录(即ls中的d)更改为该目录并附加到现有tar,并覆盖tar中的现有文件?即。 tar Auvf update.tar

这会奏效,对吧?