我以为tar archive.tar /users/mylocation
会起作用,但事实并非如此。我该怎么做?
答案1
要将档案提取到当前目录以外的目录,请使用-C
、 或--directory
、 tar 选项,例如
tar -xf archive.tar -C /target/directory
请注意,目标目录在运行该命令之前必须存在(可以通过 创建mkdir /target/directory
)。
阅读手册页(命令man tar
:)获取其他选项。
答案2
请注意,如果您的 tarball 已经包含您想要更改的目录名称,请添加以下--strip-components=1
选项:
tar xf archive.tar -C /target/directory --strip-components=1
答案3
结合前面的答案和评论:
如果缺少内容,则简单地提取内容并创建目标目录:
mkdir -p /target/directory && tar xf archive.tar -C /target/directory
提取并删除 zip 中的根目录(第一级目录)
mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
答案4
我发现与提取相关的有趣之处在于,它取决于你如何创建档案,请参见此示例
cd /tmp
mkdir folder
touch folder/file.txt
当您执行tar -zcvf folder.tar.gz folder
所有操作时,一切都按预期进行 = 当您现在解压它时,它将被解压(如果您删除了它,则会创建文件夹)为/tmp/folder/
。
但是,当你创建 tar 并将tar -zcvf tmp-folder.tar.gz /tmp/folder
其解压到文件夹中时/tmp
,结果将是/tmp/tmp/folder
目录!在这种情况下,你必须将其解压到/
-tar -xf tmp-folder.tar.gz -C /