У меня есть сценарий, в котором я извлекаю журналы из tomcat и отправляю их в свой облачный ресурс. Все работает хорошо, но у меня проблема, когда мой кот вращает журнал.
Когда журналы поворачиваются, перед ним ставится префикс даты (журнал обновляется каждый день). Поскольку мой скрипт запускается каждые полчаса, я могу пропустить журналы при его ротации, потому что я получаю журналы с их статическим именем в примере logfile.log
.
Перед поворотом файл будет выглядеть так:
logfile.log
После поворота это будет выглядеть так:
logfile.log.2012-10-09
Есть ли способы избавиться от этой проблемы?
Редактировать:
Мой сценарий:
cp /tomcat/logs/$logname $fileName
gzip $fileName
s3cmd put $fileName.gz s3://x.x.x.x.x/$folderName
Заранее спасибо.
1 ответ
Я думаю, что лучший способ сделать резервную копию ваших журналов - это выполнить проверку в соответствии с mtime файлов журнала.
Вы можете где-нибудь сохранить файл журнала mtime последней резервной копии, а затем проверить как повернутые файлы журнала, так и текущий файл журнала. Если есть повернутый файл журнала, который новее, чем последний сохраненный mtime, вы можете добавить текущий файл журнала к повернутому, а затем сделать резервную копию. Если только текущий файл журнала новее, просто сделайте резервную копию.
Время mtime файла может быть получено с помощью: LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-
или метка времени unix с помощью date "+%s" --date="$(LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-)"
Похожие вопросы
Новые вопросы
bash
Этот тег предназначен для вопросов о сценариях, написанных для командной оболочки Bash. Сценарии оболочки с синтаксисом или другими ошибками, пожалуйста, проверьте их на https://shellcheck.net, прежде чем публиковать здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут актуальны на Unix & Linux Stack Exchange или Super User, чем на Stack Overflow.
logfile.log*
?logfile.log.*
. Я имел в виду, чтоlogfile.log.previous_dates
также включен, чего я не ищу.