Как я могу проверить целостность архива mbox из командной строки?

У меня есть большая резервная копия файла mbox из gmail. Это более 5 ГБ и обновляется с новыми сообщениями каждую ночь через работу cron. Я хотел бы, чтобы задание cron также проверяло действительность архива, чтобы убедиться, что он по-прежнему является допустимым форматом mbox.

Существует ли средство командной строки для проверки файла mbox или, по крайней мере, список самых последних сообщений?

1 ответ

Формат mbox довольно прост, а стандарт достаточно гибок, и большинство почтовых приложений не заботятся о целостности самого файла, кроме наличия строка (соответствующая стандартам формата mbox) перед каждым сообщением и пустая строка после нее, а больше заботятся о целостности содержащихся в ней сообщений… Они получают реальную информацию из самого сообщения, AFAIK… Пожалуйста, посмотрите мои другие ответьте за подробное объяснение.

Поэтому запуск этогосценарий в вашем текущем файле mbox, если он имеет минимальный стандарт, то есть строку, начинающуюся с(а не тот, что в заголовках сообщений, за которым следует двоеточие) должен сгенерировать новый файл формата mbox, который может быть проанализирован почтовыми клиентами:

      awk '
 ! /^From [^:].*/ {
    p = $0
}

/^From [^:].*/ {
    if (p !~ "^$") {
        $0 = "\nFrom - Tue Nov 21 17:30:08 2023"
    } else {
        $0 = "From - Tue Nov 21 17:30:08 2023"
    }
}

1 {
    print
}
' original_file > fixed_file

... где находится ваш текущий файл mbox и— это новый файл, который будет создан с фиксированным форматом mbox и сообщениями из.

Обратите внимание, что приведенный выше скрипт исправляет распространенные ошибки в существующих строках перед сообщениями, такие как несоответствующие интервалы или включение нестандартных символов, таких как запятые, а также исправляет отсутствие пустой строки между сообщениями… Ошибки такого типа обычно возникают в результате использования инструмента экспорта mbox. это не соответствует стандартам формата mbox и вызовет путаницу для некоторых почтовых клиентов, что часто приводит к тому, что файл mbox не поддается анализу этими клиентами или анализируется весь файл со всеми отдельными сообщениями в нем как одно большое непрерывное сообщение… Если, однако ваш файл mbox не соответствует минимуму для этого сценария, т.е.между отдельными сообщениями, то вам, вероятно, придется написать собственный скрипт для анализа самих заголовков сообщений или сначала добавить эту строку вручную.

Другие вопросы по тегам