EPurger ver 1.3 (beta), (c) 2001-2005 rvm@eserv.ru

Удаляет старые файлы (по дате создания, изменения или доступа)
и/или по объему.
Может обходить деревья каталогов рекурсивно, может пропускать каталоги.
Поддерживает CGI (GET/POST), макросы на встроенном языке.

Ключи командной строки.
( Если вызван как cgi, то строка ключей передаются в переменной cmdl )

-test
\ тестовый режим. ничего не удаляется, в лог выводятся сообщения
\ о файлах, которые были бы удалены и проверяемых каталогах.

-r
\ обходить подкаталоги рекурсивно. по умолчанию вложенные каталоги не смотрит.

-m ссс
\ маска обрабатываемых файлов. по умолчанию "*"

-dir ccc
\ directory. обрабатываемый каталог (по умолчанию - ничего не обрабатывается)
\ ключи -dir и -dl  аддитивный (каталоги добавляются в общий список)

-dir.
\ текущий каталог добавить в список обрабатываемых

-dl filename
\ dirs list. файл со списком обрабатываемых каталогов. длинные имена - в кавычках.
\ на каждой строке по одному имени

-cfg filename
\ файл настроек. в нем могут быть использованны любые ключи,
\ не обязательно на одной строке

-log filename
\ log  file. имя лог-файла.
\ по умолчанию лог файл имеет имя "epurger.log" в текущем каталоге
\ -log con  - вывод лога на консоль.

-logstd
\ также вывод лога в stdout (для cgi)

-l nnn
\ log level. уровень лога (по умолчанию 5)
\ 0 - не вести лог
\ 1 - выводить минимум - старт, commadline, стоп
\ 2 - также указывать итог и тестовые сообщения (если режим теста)
\ 3 - также выводить промежуточные данные для поддеревьев
\ 5 - также выводить, если нет доступа
\ 10 - также выводить обрабатываемый каталог
\ 11 - также выводить удаленные каталоги
\ 12 - также выводить удаленные файлы
\ 16 - также выводить пропущенные каталоги

-p nnn
\ Пауза в nnn миллисекунд после каждых kkk файловых операций (по умолчанию 0)
\ (для уменьшения нагрузки на машину - пусть себе тихонько в фоне работает ;)

-period kkk
\ установить период - число файловых операций kkk между паузами
\ (по умолчанию 1000)

-HIGH
\ выскокий приоритет процесса
-NORMAL
\ нормальный приоритет процесса (по умолчанию)
-IDLE
\ низкий приоритет процесса

-sl filename
\ saved list. имя файла со списком пропускаемых каталогов.
\ в каждой строке - по одному точному имени или имени по маске

-keep filemask
\ имя/маска хранимого(не удаляемого) файла
\ или @имя файла со списком таких имен/масок
\ в каждой строке - по одному точному имени или маске
\ Ключ имеет аддитивный характер.

-keep-ro
\ не удалять файлы, имеющие атрибут R/O

-scan
\ делать сканирование ScanAND (действия могут определяться в загружаемом конфиге)
\ Глобальная последовательность операций: PurgeOR PurgeAND ScanAND

-xtf procname1
-xtd procname2
\ просканировать, выполнив procname1 над каждым файлом
\ и procname2 над каждым каталогом (можно только одно из них)
\ стек у procname1 и procname2  ( fd -- )

-size
\ подсчитать и вывести размер и число файлов
\ сканирование размера производиться после пуржинга (если таковой имел место)

-deep n
\ при подсчете размера, выводить размер поддеревьев
\ с глубиной не более n от обрабатываемого фолдера
\ n=0 не выводит (по умолчанию)
\ n=1 выводит только для обрабатываемых -dir
\ n=2 также для их подкатологов первого уровня, и т.д.
\ (потом diff на файлах лога хорошо покажет, что изменилось ;)

-purge
\ делать пуржинг (без этого ключа ничего удаляться не будет)

-e
\ удалять пустые каталоги. по умолчанию каталоги не удаляет.

-ef nnn
\ EmptyFileSize - удалить все файлы с размером менее nnn байт
\ (не завсимо от прочих условий)

-a
\ смотреть на дату последнего доступа к файлу 

-w
\ смотреть на дату последнего изменения файла (значение по умолчанию)

-c
\ смотреть на дату создания файла

-d ddd
\ оставлять файлы "моложе" указанного числа дней
\ При этом, если установлено ограничение на суммарный объем, то:
\ - объем не достигнет ограничения, если нету больше слишком старых файлов.
\ - слишком старые файлы не будут удалены, если ограничение на объем уже достигнуто.

-skb nnn
\ оставить в каждом фолдере не более nnn Kb новых файлов

-smb nnn
\ оставить в каждом фолдере не более nnn Mb новых файлов

-akb nnn
\ оставить в каждом оборабатываемом каталоге (поддереве) не более nnn Kb новых файлов
\ (если установлен -r)

-amb nnn
\ оставить в каждом оборабатываемом каталоге (поддереве) не более nnn Mb новых файлов
\ (если установлен -r)

-less nnn 
\  Удалять файлы только размером менее заданного (nnn bytes).
\  ( файлы размером больше заданного сохраняются)

-force
\ удалять файлы, даже если если не заданно дополнительных условий,
\ как то - сколько дней хранить файлы, суммарный объем, и т.п.

-h
\ как бы справка.

-help
\ вывести этот текст.

====================================================================
Примеры.
eachfile -purge -force -dir c:\temp -m *.tmp
\ удалить все tmp файлы в каталоге c:\temp

eachfile -purge -r -с -d 10 -dir c:\temp -size
\ удалить в каталоге c:\temp и подкаталогах все файлы
\ старее (по дате создания) 10 дней, вывести размер и число оставшихся файлов

eachfile -r -size -deep 2 -dir e:\work -dir "e:\Program Files" -IDLE -p 5000
\ подсчитать рекурсивно размер файлов в указанных фолдерах, выводя
\ размеры для подкаталогов до третьей вложенности от указанных,
\ при этом установить минимальный приоритет процессу
\ и делать паузу на 5 сек после каждых 1000 файловых операций.

eachfile.exe -cfg showdir.f -scan >dirlist.html
\ дать список текущего каталога в формате html
\ в соответствии с конфигурационным файлом showdir.f

====================================================================
Продукт поставляется AS IS,
...никакой ответственности..., ...все права...,  и прочее, и т.д. ;)

====================================================================
last changes: 15.Aug.2005 rvm@eserv.ru