Это продолжение темы «Архивирование больших директорий (миллионы файлов) на продакшн сервере».
Были внесены поправки в код в соответствии с замечаниями пользователей Gotf (общие рекомендации),
xorik (оценка работы ionice, упоминание cgroups c отличной ссылкой на обзор cgroups),
val-amart (трюк с проверкой наличия команды)
Повторю основные функции скрипта archive_huge_dir.sh:
- Позволяет архивировать и паковать в тихом режиме директории с миллионами файлов в файлы со структурой директорий /целевая/директория/<год>/<месяц>/<исходная поддиректория>.tar.gz.
- Есть возможность лимитировать скорость чтения (опционально).
- Прогресбар поставляемый Pipe Viever-ом.
- В дополнение: если не хочется ограничивать по скорости, то стоит воспользоваться комбинацией
ionice -c 3 nice -n 19 ./archive_huge_dir.sh ...
В процессе анализа предыдущей темы были сделаны выводы:
-
ionice
помогает снизить нагрузку на диск, если снизить приоритет до idle. В компании сnice
, который позволяет уменьшить нагрузку на проц, это не плохое решение для многих. - Тем кто решает задачи нагрузки на сервер нyжно знать о существовании cgroups.
- Lock file или файл блокировок - это техника, позволяющая предотвратить одновременно работающие скрипты.
flock
хорошо справляется с этой задачей. Пример:flock -n ~/.archive_huge_dir.lock ./archive_huge_dir.sh ...
Спасибо всем за полезные коментарии к предыдущей теме. Если я не обратил внимания на чьи-то коментарии, то это сделано не нарочно, а потому что у меня не было времени все проверить.