在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
答案 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
关闭前导斜杠删除功能,但通常不希望这样做。