當我使用下面的腳本來創建一個目錄的壓縮包用PHP焦油只有* .log文件,完成
exec("tar -zcvf archive_name.tar.gz *");
,這正按預期刪除orginals,但我想延長這種代碼,以便它只會將文件添加到具有特定擴展名的壓縮包(本例中爲* .log),然後在創建tarball後刪除原始文件。任何建議或例子都會很棒。
TIA, 凱文
當我使用下面的腳本來創建一個目錄的壓縮包用PHP焦油只有* .log文件,完成
exec("tar -zcvf archive_name.tar.gz *");
,這正按預期刪除orginals,但我想延長這種代碼,以便它只會將文件添加到具有特定擴展名的壓縮包(本例中爲* .log),然後在創建tarball後刪除原始文件。任何建議或例子都會很棒。
TIA, 凱文
您可以更改命令:
exec("tar -zcvf archive_name.tar.gz *.log && rm -f *.log")
所做的更改:
不是傳遞的所有文件(*
)作爲 參數tar
我們現在通過*.log
添加&& rm -f *.log
。命令 rm -f *.log
強制刪除目前正在工作的 目錄中的所有文件 .log
。我們使用&&
作爲兩個命令之間的 粘合劑,因爲 我們希望文件被刪除只有 之後創建了tarball。
這不是真的與PHP相關,因爲你只是逃避shell命令。嘗試
exec("tar -zcvf archive_name.tar.gz *.log && rm *.log");
這應該是在serverfault。 Tar是一個linux程序。如果你想要做純PHP一樣,你可以使用glob和Zend_Filter焦油適配器:
$files = glob("*.log");
foreach($files as $file) {
$filter = new Zend_Filter_Compress(array(
'adapter' => 'tar',
'options' => array(
'archive' => 'filename.bz2'
),
));
$compressed = $filter->filter($file);
}
感謝,你和湯姆的回答幾乎一模一樣減去-f開關,我想是需要這樣THX一次。 – kevin 2011-06-09 12:32:57
@凱文:不客氣。看看@Elzo Valugi的答案,它看起來更好,因爲它是便攜式的。另外不要忘記接受最有幫助的答案。 – codaddict 2011-06-09 12:37:42