Как скопировать содержимое файла журнала, когда журналы часто вращаются в Linux - PullRequest
0 голосов
/ 16 мая 2018

Предположим, что некоторые журналы вращаются размером по 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 Ответ

0 голосов
/ 17 мая 2018

Вы можете получить номер индекса файла, который не изменится при переименовании, а затем сослаться на файл с таким именем

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'
...