PHPでファイルのtar圧縮・解凍を行う場合、PEARライブラリのArchive_Tarを利用すると良いでしょう。
gz, bz2形式も扱えます。
注意:PHPにzlibのエクステンションが必要です。
圧縮例)
$archiveFile = "archive.tar.gz";
// インスタンス
$Tar = new Archive_Tar($archiveFile, "gz");
$fileList[0] = "file1.txt"; // ファイル
$fileList[1] = "/tmp/work/"; // ディレクトリ
// tar.gzファイル作成
$Tar->create($fileList);
// 追加
$fileList[0] = "/tmp/work1/file2.txt"; // ファイル
$fileList[1] = "/tmp/work2/"; // ディレクトリ
$Tar->add($fileList);
