tar:如何创建具有任意前导目录的 tar 文件,而无需“cd”到父目录

tar:如何创建具有任意前导目录的 tar 文件,而无需“cd”到父目录

假设我有一个文件目录

/home/user1/dir1

我想要创建一个仅以“dir1”为主要目录的 tar:

/dir1/file1
/dir1/file2

我知道我可以先 cd 到目录

cd /home/user1/
tar czvf dir1.tar.gz dir1

但在编写脚本时,从一个目录跳转到另一个目录并不总是有利的。我想知道有没有办法使用绝对路径来做到这一点而不改变当前目录?

我知道我可以随时创建一个带有绝对路径的 tar 文件并使用

--strip-components 

提取时,但有时额外的路径名是您不想与 tar 文件一起分发的额外私人信息。

谢谢!

答案1

tar -C 更改目录

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

顺便说一句,它可以方便地跟踪目录的变化...使用 pushd 和 popd。

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

答案2

使用 gnu tar,您可以创建一个具有与实际不同的基本目录的档案:

tar -c --transform 's,^\.,mybasedir,' .

只需根据您的需要调整 sed 表达式即可。

答案3

好的,我还发现

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

也按照我想要的方式工作。

答案4

我使用下面的命令为某个目录中的整个文件创建 tar,

tar -C ${filePath} -cvzf test.tar.gz $(ls ${filePath})

相关内容