Как скопировать содержимое файла журнала, когда журналы часто вращаются в Linux
Предположим, что некоторые журналы вращаются размером 50 МБ каждый. Я сделал 'grep' некоторую строку, и моя строка присутствует в файле журнала, log_3, и я хочу скопировать содержимое log_3, прежде чем оно будет повернуто (переименовано) в log_4 . Подскажите, пожалуйста, как сделать резервную копию содержимого log_3 до его поворота. Мне просто нужно содержимое log_3. Я не хочу, чтобы я скопировал log_3 (с помощью cp -p log_3 log_3_backup), но к тому времени журналы были повернуты, и теперь log_3_backup содержит содержимое log_2 . Есть какой-нибудь способ, которым мы можем избежать этого. Работая над проектом автоматизации, мне нужно решение этого вопроса. Большое спасибо за ваши предложения заранее. Вы можете поделиться Python или сценарий оболочки.
1 ответ
Вы можете получить номер индекса файла, который не изменится, если переименовать, а затем сослаться на файл по этому имени.
for f in *.log; do
# get inode of file
iname=$(ls -i $f)
# test file contents for pattern presence
if grep -q 'some pattern' $f; then
# the file contains the searched pattern, let's do something
# find by inode number and move it
find -inum $iname -exec mv {} {}.bak ';'
fi
done
Возможно, резервное копирование файла больше не требуется, давайте снова запишем его
find -inum $iname -print0 | xargs -r0 grep 'some pattern'