如何从绝对路径和包文件创建tar存档,就好像它们是相对的一样?

时间:2018-02-04 05:12:35

标签: linux path directory tar subdirectory

在Linux上,我试图从另一个目录创建一个.tar.gz存档,也就是说我有一个bash脚本,它将从另一个目录执行。该脚本将打包文件夹,我将给出文件夹的绝对目录说/home/user1/Documents/folder1但是当它打包tar文件时,它将整个绝对目录放在归档中,而我只想要来自folder1的相对目录。

例如:

tar czf /home/user1/Documents/folder1.tar.gz /home/user1/Documents/folder1

这将创建一个存档,但第一个文件夹将位于主页,然后位于该文档内的user1内,并且位于文件夹1内,当然没有其他分支的其他子文件夹。

控制台也会出现此错误:

tar: Removing leading `/' from member names

我希望它被打包,好像我会从同一个文件夹执行命令,因此归档中唯一的文件夹应该是folder1,并且在它自己的子文件夹中。

因此,内部存档应该看起来就像我从同一目录文件夹1中执行此代码一样:

tar czf folder1.tar.gz folder1

1 个答案:

答案 0 :(得分:4)

在执行任何操作之前,您可以使用-C选项更改目录:

tar czf /home/user1/Documents/folder1.tar.gz -C /home/user1/Documents folder1

现在,您的存档内容将如下所示:

$ tar tf /home/user1/Documents/folder1.tar.gz 
folder1/
folder1/file1

顺便说一下,你得到的信息不是错误。它告诉你它使存档中的路径相对,以避免覆盖文件,这在使用绝对路径解压缩存档时很容易发生。您可以使用-P关闭前导斜杠删除功能,但通常不希望这样做。