tar没有保留目录结构

时间:2014-01-25 09:08:16

标签: php centos tar

我想在没有保留目录结构的情况下tar目录,例如我正在考虑这个

shell_exec('tar czf '. __DIR__ .'/tmp/'.$entry.'.tar.gz /home/minecraft/multicraft/servers/'.$entry);

这个工作正常但是正确但当我打开.tar.gz时它会显示为

enter image description here

我想不保留目录结构只是没有目录结构的文件夹内容。所以,.tar.gz包含 / home / minecraft / multicraft / servers / server1 我只想在.tar中拥有目录 server1 的内容。广州

server1的内容:

enter image description here

如果有人对此有任何帮助,我们将不胜感激!

2 个答案:

答案 0 :(得分:1)

在创建存档之前使用tar -Cchange directory

tar cz -C /path/to/dir . -f /path/to/archive.tar.gz
# archive.tar.gz gets contents of /path/to/dir as root entry:
# ./
# ./data.txt

如果我正确地得到了你的PHP代码,那就像是:

$tar_dir = "/home/minecraft/multicraft/servers/$entry";
$archive = __DIR__ . "/tmp/$entry.tar.gz";
shell_exec("tar cz -C $tar_dir . -f $archive");

答案 1 :(得分:0)

另一种方法是在解压缩之前预处理tar存档。然后你将有几个步骤:

  1. 处理tar存档,可能使用tardy(可能使用-Remove_Prefix选项);然后你可以删除tar球中的任何前缀,你将得到一个新的修改后的tar档案。

  2. 使用tar -xf从新修改的档案中摘录;您也可以将-C传递给更改目录(由Grebneke's answer建议)

  3. 删除新修改的tar存档(如果需要,也可以删除原始存档)

  4. 这种方法非常通用,因为tardy是一个非常强大的处理器。但是,您可能需要更多磁盘空间(可能需要两倍于归档文件占用的空间,因为您可能需要将已处理的tar归档文件解压缩)。