从文件夹创建 tar 时删除文件夹结构

从文件夹创建 tar 时删除文件夹结构

好吧,我真的不想再浪费时间调查这个问题,但我确实想提供一个 .tar 选项供下载,而不仅仅是 zip。

    $archive = "/home/stevenbu/public_html/temp/".$twitter_name.".tar";
    $directory = "/home/stevenbu/public_html/temp/".$twitter_name;
    exec("tar -cf $archive $directory");

问题是,当我提取 .tar 时,它有 5 个文件夹深,我不希望有文件夹,而只希望有 .tar 中的文件

非常感谢

答案1

距离我上次使用 php 已经有一段时间了,但是

exec("cd /home/stevenbu/public_html/temp/;tar -cf $archive $directory");

将有助于 shell。

答案2

$parent = "/home/stevenbu/public_html/temp";
$dir = $twitter_name;
$archive = $twitter_name.".tgz";

exec('tar -cz -f '.escapeshellarg($archive).' -C '.escapeshellarg($parent).' '.escapeshellarg($dir));

这个稍微好一点,因为它将文件.tar.gz直接输出到浏览器,而不是创建临时文件:

$parent = "/home/stevenbu/public_html/temp";
$dir = $twitter_name;
$archive = $twitter_name.".tar.gz";

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.addslashes($archive).'"');
passthru('tar -cz -C '.escapeshellarg($parent).' '.escapeshellarg($dir));

相关内容