我想在没有保留目录结构的情况下tar目录,例如我正在考虑这个
shell_exec('tar czf '. __DIR__ .'/tmp/'.$entry.'.tar.gz /home/minecraft/multicraft/servers/'.$entry);
这个工作正常但是正确但当我打开.tar.gz时它会显示为
我想不保留目录结构只是没有目录结构的文件夹内容。所以,.tar.gz包含 / home / minecraft / multicraft / servers / server1 我只想在.tar中拥有目录 server1 的内容。广州
server1的内容:
如果有人对此有任何帮助,我们将不胜感激!
答案 0 :(得分:1)
在创建存档之前使用tar -C
到change 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存档。然后你将有几个步骤:
处理tar
存档,可能使用tardy(可能使用-Remove_Prefix
选项);然后你可以删除tar球中的任何前缀,你将得到一个新的修改后的tar
档案。
使用tar -xf
从新修改的档案中摘录;您也可以将-C
传递给更改目录(由Grebneke's answer建议)
删除新修改的tar
存档(如果需要,也可以删除原始存档)
这种方法非常通用,因为tardy
是一个非常强大的处理器。但是,您可能需要更多磁盘空间(可能需要两倍于归档文件占用的空间,因为您可能需要将已处理的tar归档文件解压缩)。