tar только * .log файлы и удаление оригиналов по окончании - PullRequest
1 голос
/ 09 июня 2011

Я использую следующий скрипт для создания архива каталога с php

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

и это работает, как и ожидалось, но я хотел бы расширить этот код так, чтобы он добавлял в архив только файлы с определенным расширением (в данном случае * .log), а затем удалял оригиналы после того, как архив был создано. Любой совет или примеры будут великолепны.

ТИА, Kevin

Ответы [ 3 ]

3 голосов
/ 09 июня 2011

Вы можете изменить свою команду на:

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

Изменения сделаны:

  • Вместо передачи всего файла (*) как аргумент tar мы сейчас передаем *.log

  • Добавлено && rm -f *.log. Команда rm -f *.log принудительно удаляет все .log файлов из настоящего рабочего каталог. Мы использовали && в качестве клей между двумя командами, потому что мы хотим, чтобы файлы были удалены только после создается тарбол.

2 голосов
/ 09 июня 2011

Это не имеет никакого отношения к php, поскольку вы все равно просто переходите к команде оболочки.Попробуйте

exec("tar -zcvf archive_name.tar.gz *.log && rm *.log");
1 голос
/ 09 июня 2011

Это должно быть при сбое сервера. Tar - это программа для Linux. Если вы хотите сделать то же самое в чистом PHP, вы можете использовать glob и Zend_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);
}
...