Войти

Показать полную графическую версию : Архивация логов с датой по месяцам (7zip)


ezmax
16-08-2012, 10:00
Добрый день!
Требуется архивировать устаревшие логи в архив и архивы создавать помесячно. (Архиватор 7zip)
Логи хранятся в формате *YYMMDD.log и *YYMMDD.txt где * произвольный набор символов (длина чаще всего 2 шт и более)
архивы alogYYMM.7z
Желательно чтобы оставались логи за текущий месяц.
(замечу что логи текущей даты открыты для записи)


Первое что пришло в голову


hostname>>arclog.log
echo %Date%>>arclog.log
echo %time%>>arclog.log
FOR /L %%g IN (10,1,12) DO FOR %%m IN (01,02,03,04,05,06,07,08,09,10,11,12) DO (
if exist *%%g%%m*.* 7z u -t7z .\arc\alog%%g%%m.7z *%%g%%m??.* -m0=PPMd -mx=9
del *%%g%%m??.* /Q
)


недостаток у этой реализации - удаляются логи за текущий месяц

немного модифицировал но что-то не работает как надо :(


set Dtmp=%Date%
set DD=%Dtmp:~0,2%
set DM=%Dtmp:~3,2%
set DY=%Dtmp:~8,2%
hostname>>arclog.log
echo %Date%>>arclog.log
echo %time%>>arclog.log
FOR /L %%g IN (10,1,12) DO FOR %%m IN (01,02,03,04,05,06,07,08,09,10,11,12) DO (
if exist *%%g%%m*.* 7z u -t7z -sdel .\arc\alog%%g%%m.7z *%%g%%m??.* -m0=PPMd -mx=9
if %%g==%DY% (@if %%m==%DM% cls else del *%%g%%m??.* /Q) else del *%%g%%m??.* /Q
)


Подскажите что тут не так.
Может быть есть какой-то другой вариант обработки логов, например чтобы не перечислять весь список в цикле а как то понять какие логи есть и применить соответствующую команду архивации.

Еще один момент, 7zip (9.20) не умеет переносить (удалять после архивации) файлы в архив, появилась такая возможность в альфа версии 9.28 и то она не действует для команды (u) только для (а).
Применение альфа версии не желательно, да в данный момент на местах установлена 9.20




© OSzone.net 2001-2012