tar只有* .log文件并在完成后删除orginals

时间:2011-06-09 12:23:47

标签: shell tar

我使用以下脚本使用php

创建目录的tarball
exec("tar -zcvf archive_name.tar.gz *");

这是按预期工作的,但是我想扩展这段代码,以便它只将文件添加到具有特定扩展名的tarball(在这种情况下为* .log),然后在tarball之后删除原始文件创建。任何建议或例子都会很棒。

TIA, 凯文

3 个答案:

答案 0 :(得分:3)

您可以将命令更改为:

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

所做的更改:

  • 而不是传递所有文件(*tar的参数我们现在通过了*.log

  • 添加了&& rm -f *.log。命令 rm -f *.log强行删除全部 来自当前工作的.log个文件 目录。我们使用&&作为 这两个命令之间的粘合因为 我们希望仅删除文件 之后创建了tarball。

答案 1 :(得分:2)

这与php无关,因为你只是逃避了shell命令。尝试

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

答案 2 :(得分:1)

这应该是在serverfault上。 Tar是一个linux程序。如果你想在纯PHP中做同样的事情,你可以使用globZend_Filter tar适配器:

$files = glob("*.log");
foreach($files as $file) {
    $filter     = new Zend_Filter_Compress(array(
         'adapter' => 'tar',
         'options' => array(
            'archive' => 'filename.bz2'
         ),
    ));
    $compressed = $filter->filter($file);
}