Сохранение временных меток при извлечении .tgz логов

Вопрос или проблема

У меня есть несколько логов kernel-panic в формате .tgz, которые мне нужно извлечь из одного файла. Важны временные метки для этих .tgz файлов. Каждый раз, когда я использую следующее:
tar -zvxf paniclogs.tgz

-rwxrwxrwx 1 root root   22359 22 фев 15:03 kernel-panic-20190213020406-3.tgz
-rwxrwxrwx 1 root root   22971 22 фев 15:03 kernel-panic-20190213020844-2.tgz
-rwxrwxrwx 1 root root   28344 22 фев 15:03 kernel-panic-20190213101549-1.tgz
-rwxrwxrwx 1 root root   30683 22 фев 15:03 kernel-panic-20190213154050-0.tgz

Логи извлекаются, но временные метки изменяются на дату и время, когда я их извлек. Это не так, когда я использую Cygwin. Я знаю, что должно быть решение для извлечения этих логов с сохранением временных меток. Можете помочь? Спасибо.

Это нельзя сделать с помощью GNU tar. Однако существует менее известная утилита star, разработанная Йоргом Шиллингом, которая сделает именно то, что вам нужно. Я покажу, как это работает.

Сначала мы можем изучить один файл в архиве tgz и продемонстрировать его временную метку, которую я выделил ниже, чтобы вывести терминал было хорошо видно:

andrew@ilium$ tar -tv --full-time -f test.tgz mp3enc31/readme.txt
-rw-r--r-- sir/inel        937 1998-11-06 00:28:41 mp3enc31/readme.txt
                               ^^^^^^^^^^

Как вы обнаружили, когда вы извлекаете этот файл обычным способом с помощью tar, время доступа (и время изменения) изменяются. Я снова изменил вывод терминала, чтобы легко это показать:

andrew@ilium~$ tar -xf test.tgz mp3enc31/readme.txt
andrew@ilium~$ stat mp3enc31/readme.txt 
  Файл: readme.txt
  Размер: 937         Блоки: 8          IO Блок: 4096   обычный файл
Устройство: 801h/2049d  Идентификатор: 56885505    Ссылки: 1
Доступ: (0644/-rw-r--r--)  UID: ( 1000/  andrew)   GID: (  100/   users)
Доступ: 2019-02-23 17:13:55.385500219 +1100     <--------------------
Изменено: 1998-11-06 00:28:41.000000000 +1100
Изменение: 2019-02-23 17:13:55.385500219 +1100     <--------------------
 Создано: -
andrew@ilium~$ 

Однако, если мы используем утилиту star под sudo, (обратите внимание, что sudo обязательно для изменения времени ctime) вы увидите, что все времена доступа сохраняются:

andrew@ilium~$ sudo star -xza -ctime < test.tgz mp3enc31/readme.txt
star: 62 blocks + 0 bytes (всего 634880 bytes = 620.00k).
andrew@ilium~$ stat mp3enc31/readme.txt 
  Файл: readme.txt
  Размер: 937         Блоки: 8          IO Блок: 4096   обычный файл
Устройство: 801h/2049d  Идентификатор: 59377688    Ссылки: 1
Доступ: (0644/-rw-r--r--)  UID: (30076/ UNKNOWN)   GID: (30000/ UNKNOWN)
Доступ: 1998-11-06 00:28:41.000000000 +1100     <--------------------
Изменено: 1998-11-06 00:28:41.000000000 +1100
Изменение: 1998-11-06 00:28:41.000000000 +1100     <--------------------
 Создано: -
andrew@ilium~$

Страницы man star предупреждают о некоторой осторожности с параметром -ctime, так как он может сбить с толку cron, систему новостей и даже замедлить системные часы. Поэтому будьте немного осторожны!

Ссылки:

  • man-страницы для star: Документация по всем параметрам, использованным выше, и демонстрация многих других доступных параметров.

Ответ или решение

Когда вы работаете с архивами файлов .tgz, содержащими важные журналы (например, журналы ядра при сбоях), сохранение временных меток является важной задачей. К сожалению, стандартная утилита tar, как вы уже заметили, изменяет временные метки извлекаемых файлов на дату и время извлечения. Это может стать проблемой, если вам нужно сохранить оригинальные временные метки для дальнейшего анализа или отчетности.

Тем не менее, существует альтернатива — утилита star, разработанная Йоргом Шиллингом, которая позволяет извлекать файлы из архивов .tgz с сохранением временных меток. В этой статье мы подробно рассмотрим, как использовать star для этой цели.

Установка star

Прежде чем начать, убедитесь, что star установлен на вашем компьютере. Вы можете установить его через пакетный менеджер, используемый в вашей системе. Например, в Ubuntu или Debian это можно сделать, используя:

sudo apt-get install star

В RHEL или CentOS:

sudo yum install star

Извлечение файлов с сохранением временных меток

Чтобы извлечь файлы из вашего .tgz архива и при этом сохранить временные метки, выполните следующие шаги:

  1. Проверьте содержимое архива: Прежде чем извлекать файлы, вы можете просмотреть, какие файлы есть в архиве и их временные метки:

    tar -tv --full-time -f paniclogs.tgz
  2. Извлечение с использованием star: Чтобы извлечь файлы с сохранением временных меток, выполните следующую команду:

    sudo star -xza -ctime < paniclogs.tgz
    • Опция -xza используется для извлечения файлов из архива автоматически, определяя тип архива.
    • Опция -ctime сохраняет время изменения (ctime) файлов, что особенно важно, если эти временные метки необходимы для системного анализа.
  3. Проверка временных меток: После завершения извлечения проверьте временные метки файлов с помощью команды stat:

    stat имя_файла

Эта команда покажет вам временные метки доступа, изменения и модификации, которые теперь должны совпадать с оригинальными временными метками файлов в архиве.

Важные замечания

  • Будьте осторожны с использованием опции -ctime, так как это может повлиять на другие системные процессы (например, cron или системы новостей), если они зависят от временных меток файлов.
  • Убедитесь, что вы запускаете команду с sudo, чтобы получить права на изменение атрибутов файлов, особенно если они изначально принадлежат другому пользователю или группе.

Заключение

Использование утилиты star — это надежный способ извлечения архивов .tgz с сохранением оригинальных временных меток. С помощью описанных выше шагов вы можете успешно управлять журналами системных сбоев без риска потери важной информации о времени. Это не только упростит вашу работу, но и повысит качество последующего анализа данных.

Дополнительные ресурсы

Для детальной информации о доступных опциях и функциональности star, следует обратиться к официальной документации, которая может предложить полезные советы по использованию этой утилиты в ваших проектах.

Оцените материал
Добавить комментарий

Капча загружается...