2011-06-09 56 views
1

當我使用下面的腳本來創建一個目錄的壓縮包用PHP焦油只有* .log文件,完成

exec("tar -zcvf archive_name.tar.gz *"); 

,這正按預期刪除orginals,但我想延長這種代碼,以便它只會將文件添加到具有特定擴展名的壓縮包(本例中爲* .log),然後在創建tarball後刪除原始文件。任何建議或例子都會很棒。

TIA, 凱文

回答

3

您可以更改命令:

exec("tar -zcvf archive_name.tar.gz *.log && rm -f *.log") 

所做的更改:

  • 不是傳遞的所有文件(*)作爲 參數tar我們現在通過*.log

  • 添加&& rm -f *.log。命令 rm -f *.log強制刪除目前正在工作的 目錄中的所有文件 .log。我們使用&&作爲兩個命令之間的 粘合劑,因爲 我們希望文件被刪除只有 之後創建了tarball。

+0

感謝,你和湯姆的回答幾乎一模一樣減去-f開關,我想是需要這樣THX一次。 – kevin 2011-06-09 12:32:57

+0

@凱文:不客氣。看看@Elzo Valugi的答案,它看起來更好,因爲它是便攜式的。另外不要忘記接受最有幫助的答案。 – codaddict 2011-06-09 12:37:42

1

這不是真的與PHP相關,因爲你只是逃避shell命令。嘗試

exec("tar -zcvf archive_name.tar.gz *.log && rm *.log"); 
1

這應該是在serverfault。 Tar是一個linux程序。如果你想要做純PHP一樣,你可以使用globZend_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); 
}