Intereting Posts
Проблема с MariaDB Зависимости после isntall / remove Условия, отправленные через ssh, выполняются локально, а не удаленно cgroups: cgclassify процессы других пользователей лучший способ поиска истории моей оболочки Невозможно выскочить на службу в честь возможностей (7) Скорость записи медленного USB 3 Должны ли операнды к утилите всегда появляться после всех параметров утилиты? Автоматический запуск сценария при подключении Wifi-карты (udev) Как исправить unison failing с «Fatal error: Internal error: Новые архивы не идентичны» для идентичных путей? Использование памяти для данного процесса (с использованием файловой системы proc proc) Как скомпилировать Linux-драйвер для Netis WF2190 Wifi-ключа для FriendlyARM mini210s? Bash – ввод данных для замещенной команды, хранящейся в переменной Ошибки Traceback, устанавливающие Python 3.6.1 на Redhat Ubuntu: как отключить экран загрузки и выхода из системы? Проблемы с размером шрифта с Emacs в режиме linum

tar выходы с bzip2: (stdin): конечный мусор после EOF игнорируется после извлечения

Я извлек большой (3.9GB) файл tar.bz2, используя следующую команду:

tar -xjvf archive.tar.bz2 

Экстракт продолжает штрафовать, но выходит из печати:

 bzip2: (stdin): trailing garbage after EOF ignored 

Есть ли проблема с архивом / извлечением? Была ли нарушена целостность моих данных?

конечный мусор означает, что в конце файла есть посторонние данные, которые не являются частью формата bz2 ; поэтому bz2 не может иметь никакого смысла дополнительных данных (следовательно, мусора).

Если вы хотите спровоцировать ошибку:

 $ echo Hello World | bzip2 > helloworld.bz2 $ echo Something not bzip2... >> helloworld.bz2 $ bunzip2 < helloworld.bz2 Hello World bunzip2: (stdin): trailing garbage after EOF ignored 

Первая команда создает файл bzip2, содержащий сообщение Hello World .

Вторая команда добавляет Something not bzip2... в файл bzip2. Это конечный мусор, потому что он не сжат bzip2.

Выполнение этого через bunzip2 приводит к действительным данным, но выводит предупреждение о посторонних игнорируемых данных.

В конце, данные, которые были первоначально сжаты, по-прежнему неповрежденными, но что-то нечетное произошло в конце файла. Возможно, стоит посмотреть на него в шестнадцатеричном редакторе; иногда вы можете сказать, что произошло, иногда вы не можете.

 $ hexdump -C helloworld.bz2 00000000 42 5a 68 39 31 41 59 26 53 59 d8 72 01 2f 00 00 |BZh91AY&SY.r./..| 00000010 01 57 80 00 10 40 00 00 40 00 80 06 04 90 00 20 |.W...@..@...... | 00000020 00 22 06 86 d4 20 c9 88 c7 69 e8 28 1f 8b b9 22 |."... ...i.(..."| 00000030 9c 28 48 6c 39 00 97 80 53 6f 6d 65 74 68 69 6e |.(Hl9...Somethin| 00000040 67 20 6e 6f 74 20 62 7a 69 70 32 2e 2e 2e 0a |g not bzip2....| 

Этот пример очевиден, поскольку обычно вы не видите обычный текст в сжатых данных bzip2.

Большой вопрос заключается в том, был ли добавлен мусор (например, в приведенном выше примере, оставив исходные данные целыми) или произошел какой-то коррупция. Из сообщения об ошибке невозможно сказать (сам bzip2 не знает); однако, если это было случайное повреждение, вы обычно видите сообщения об ошибках tar.

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

Чтобы получить размер реального сжатого tar-архива, повторно скомпонуйте его.

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

 tail -c +12345 witTrailingData.tar.bz2 

(Это может быть значительным с большим файлом)