在 Linux 上,我试图从不同的目录创建一个 .tar.gz 存档,也就是说,我有一个将从不同目录执行的 bash 脚本。该脚本将打包文件夹,我将给出文件夹的绝对目录 /home/user1/Documents/folder1
但是当它打包 tar 文件时,它将整个绝对目录放入存档中,而我只想要 folder1 中的相关文件。
例如:
tar czf/home/user1/Documents/folder1.tar.gz/home/user1/Documents/folder1
这将创建一个存档,但第一个文件夹将在 home 中,然后在 user1 内部、文档内部和 folder1 内部,当然没有来自其他分支的其他子文件夹。
控制台也给出了这个错误:
tar: Removing leading `/' from member names
我希望它被打包,就好像我会从同一个文件夹执行命令一样,所以存档中的唯一文件夹应该是 folder1,并且在里面它有自己的子文件夹。
所以里面的存档应该看起来就像我从 folder1 所在的同一目录执行这段代码一样:
tar czf folder1.tar.gz folder1
最佳答案
您可以在执行任何操作之前使用-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
顺便说一句,您收到的消息不是错误。它是 tar 告诉您它使存档中的路径相对,以避免覆盖文件,这在使用绝对路径解压缩存档时很容易发生。您可以使用 -P
关闭前导斜线删除,但您通常不希望这样做。
关于linux - 如何从绝对路径和包文件创建 tar 存档,就好像它们是相对的一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604954/