假设我有一个文件目录
/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})