Сжать старые файлы журнала и переместить в новый каталог.

Сжать старые файлы журнала и переместить в новый каталог.

У меня есть папка /home/usr/logs/, содержащая файлы журналов старше 1 дня. Я хочу сжать все файлы журналов старше одного дня в отдельные сжатые архивы (например, zip или tar.gz) и переместить их в папку /home/usr/logs/archive.

Файлы журналов имеют такие форматы имен, как valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log.1019, app5s.sts.1019.

Я попробовал так:

find .  -mtime +1 -exec zip filename.zip '{}' + && mv filename.zip archive/ \;

Но эти файлы не заархивированы должным образом. Кто-нибудь, пожалуйста, поможет мне разобраться с ошибкой в ​​моем коде?

решение1

logrotate может это сделать, сопоставление с образцом может быть для *log, затем вы добавляете раздел с именем «postrotate», рассматривая postrotate как небольшой bash-скрипт, который запускается после ротации.

пример;

/home/usr/logs/*.log {
    daily
    missingok
    compress
    #delaycompress (this will prevent compressing of one day)
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
                mv /home/usr/logs/*.gz /home/usr/logs/archive/;
    endscript
}

ОБНОВЛЕНИЕ1:

если вы хотите использовать zip вместо gzip, добавьте;

compresscmd /usr/bin/zip
compressoptions -r
compressext .zip

Связанный контент