Du kannst ihr jede beliebige Ändung geben, diese spielt erstmal keinerlei Rolle, die üblicherweise verwendete Kurzvariante wäre übrigens .tbz oder .tb2
Naja. Ich hatte tar -czf (also gzip zum Packen) und die Endung tar.gz statt bzip2 und die vorgeschlagenen Endungen vorgeschlagen, weil ggf. Windows-Anwendungen damit besser klarkommen.
tar -czf archiv.tgz datei_1 datei_N dir_1 dir_N
wäre dann also auch ein Kandidat.
tar -cjf archiv.tb2 datei_1 datei_N dir_1 dir_N
wäre dann also ein anderer Kandidat.
Noch eine Alternative: Etwas wie
header ('content-type: application/x-gtar-compressed');
...
passthru('tar -czO dir1 dir2 dirN file1 file2 foleN');
wäre in einfachen Fällen meine Methode der Wahl, die Ausgabe erfolgt dann direkt.
Willst Du aber die Rückgaben (Fehler?) auswerten und hast Du es mit Benutzereingaben zu tun, dann nimm ETWAS WIE:
$arItems[]='/var/log/syslog'
$arItems[]='/var/log/apache/'
$itemShellEscaped='';
$tempfile=tempnam();
unset ($arItems);
foreach ($arItems as $item) {
$itemsShellEscaped .= escapeshellarg($item).' ';
}
$shCommand="tar -czf $tempfile $itemsShellEscaped 2>&1";
exec($shCommand, &$arReturns, &$intReturn);
if (! $intReturn) {
header ('content-type: application/x-gtar-compressed');
echo file_get_contents($tempfile);
} else {
die ('
<pre>Versucht wurde: ' . $shCommand . '</br>
Ausgaben, Fehler:</br> . htmlentities(implode('</br>', $arReturns)) . '
</pre>
');
}
unlink($tempfile);
unset ($returns, $err);
Das ist jetzt mal nicht getestet, aber es zeigt die grundlegende Vorgehensweise.
Jörg Reinholz