Сжатие старых файлов журнала и переход в новый каталог

У меня есть папка /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/ \; 

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

  • Распаковать все несуществующие или более старые файлы из архива
  • Найти файл во многих zip-файлах (например, найти команду для каталогов)
  • tar.bz2 7zip выборочная экстракция
  • Есть ли способ конвертировать zip в tar без извлечения его в файловую систему?
  • проблема с zip-файлом с использованием пароля
  • У меня есть список файлов - результат команды find, как я могу использовать его для zip / tar файлов и удалять исходные файлы
  • Только чтение файлов файловой системы в формате .zip
  • Поиск строки в нескольких ZIP-файлах
  • One Solution collect form web for “Сжатие старых файлов журнала и переход в новый каталог”

    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 } 

    Update1:

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

     compresscmd /usr/bin/zip compressoptions -r compressext .zip 
    Linux и Unix - лучшая ОС в мире.