2015-08-10 2 views
1

Я работаю над небольшим сценарием, чтобы помочь мне управлять огромным выбором файлов журнала на основе этого Question.Найти файлы старше X дней, gzip, создать MD5 и удалить оригинал

Я добавил дополнительные требования мне нужно было:

-Найти .log файлы> 2 день (это было больше для safetly предосторожности)
-Создание MD5 хэш файла журнала
-Remove оригинальный файл журнала

!/bin/bash 
# 1) Find .log files > 2 days 
# 2) Determine filename 
# 3) gzip filename 
# 4) Create gzip MD5 
# 5) Remove original file 

function compress_file { 
    BASENAME=`/bin/basename "$1"`; 
    /bin/gzip -c "$1" > /var/logs/$BASENAME.gz; 
    /usr/bin/md5sum /var/logs/$BASENAME.gz > /var/logs/$BASENAME.gz.md5 
    /bin/rm /var/logs/$BASENAME 
} 

export -f compress_file; 
/bin/find /var/logs -iname "*.log" -mtime +2 -exec /bin/bash -c 'compress_file "$0"' {} \; 
export -fn compress_file; 

Поскольку это критическая операция, я хотел бы записать код в файл журнала (или даже отправить в syslog) для аудита и устранения неполадок.

UPDATE: в Additonal для входа в регистраторе, как я могу обрабатывать файлы журналов, если там, где хранится год/месяц/день с $ BASENAME обрабатывает только имя файла и не учитывает динамических каталогов.

/var/log//2015/08/10/data1.log 
/var/log//2015/08/10/data2.log 
/var/log//2015/08/10/data3.log 
/var/log//2015/08/11/data1.log 
/var/log//2015/08/11/data2.log 
/var/log//2015/08/11/data3.log 
+0

Вы можете попытаться получить список пустых папок и удалить их. Например: find/-type d -empty –

+0

Я полагаю, что вышеупомянутый soluton отлично работает со статическим каталогом и требует другого подхода, если использует динамические пути каталога, включая YYYY/MM/DDD. – pablo808

ответ

0

Вы можете использовать Лог инфокодов команду для записи сообщений в системный журнал. Просто записывайте сообщения журнала перед любой операцией. Нравится:

Logger "Remove $BASENAME" 
/bin/rm /var/logs/$BASENAME 

Вы также можете проверить результат своих критических команд. Просто проверьте «$?». переменная после выполнения любой команды. Он содержит результат выполнения.

Смежные вопросы