如何从绝对路径和包文件创建 tar 存档,就好像它们是相对的一样?
How to create a tar archive from an absolute path and package files as if they were relative?
在 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.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
关闭前导斜杠删除,但您通常不希望那样。