>_ IzzyLab

Практическое задание

Сожми логи параллельно и безопасно к пробелам

сложно

В каталоге /root/logs лежат файлы *.log, часть — с пробелами в именах (error 1.log). Сожми каждый лог утилитой gzip (на выходе появятся *.log.gz, оригиналы gzip удаляет сам), запуская сжатие в несколько параллельных процессов. Связка должна корректно переживать пробелы в именах.

Что потренируешь:
  • find
  • xargs
  • параллельность
  • -print0
  • gzip

Разбор темы

xargs умеет не только безопасно к пробелам (-0 в паре с find -print0), но и распараллеливать работу: ключ -P N держит до N процессов одновременно, а -n1 отдаёт по одному аргументу на запуск команды, чтобы процессы были независимыми. В роли команды тут gzip, который сам заменяет каждый исходник на его сжатую версию и удаляет оригинал. Так пачка файлов сжимается параллельно и без поломки на именах с пробелами.

Что проверяется

  1. все логи сжаты
  2. несжатых логов не осталось

Как это выглядит