フォルダからtarを作成するときにフォルダ構造を削除する


1

わかりましたこれ以上調査することにそれ以上時間を無駄にしたいと思いませんが私はただzipの代りにダウンロードのための.tarオプションを提供したいと思います。

    $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内のファイルだけが欲しいのです。

どうもありがとう


実際にはPHPの質問ではなく、より多くのtarの質問です。
AJ.

そしてtarは 'ジャンクフォルダ'オプションを持っていません...
pavium

あなたの質問とは直接関係がありませんが、 常に 誰かが入る可能性を考える $(rm -rf ~) 彼らのTwitterの名前として。
grawity

@AJ PHPではなく、直接php execから実行されます。状況によっては違いが出ます。 @grawityどうもありがとうTwitterの名前は彼らからではなく私から来ています。
StevenBullen

回答:


1

私が最後にphpを使ってからしばらく経ちましたが、

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

シェルに役立ちます。


これは機能しますが、代わりに&&を使用する必要がありました。の代わりに ;それ以外の場合はデフォルトのディレクトリに戻りました。 exec( "cd / home / stevenbu / public_html / temp /; tar -cf $ archive $ directory");
StevenBullen

0
$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));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.