Восстановление поврежденного tarball

У меня на руках испорченный архив. Моя первая попытка восстановления прошла следующим образом:

$ tar --ignore-failed-read --ignore-command-error -xf tarball.tar tar: Skipping to next header tar: Archive contains '180738 0' where numeric mode_t value expected tar: Archive contains '0.445647 -9.' where numeric time_t value expected tar: Archive contains '.259273 ' where numeric uid_t value expected tar: Archive contains obsolescent base-64 headers tar: Archive contains '-0.94874' where numeric gid_t value expected tar: text from a text file is here: implausibly old time stamp 1969-12-31 18:59:59 tar: more text file contents are here: Unknown file type 'p', extracted as normal file tar: Skipping to next header tar: Skipping to next header tar: Exiting with failure status due to previous errors 

Это не извлекло много из tarball перед ошибкой. Статус выхода – это 2, о котором говорит эта страница tar man, является фатальной ошибкой.

Документация для « gzip Recovery Toolkit » предложила следующее:

 cpio -F tarball.tar -i -v 

Это извлекло 1.2G 1.8G tarball, что довольно хорошо. Он останавливается с кучей мусора, введенного после подсказки терминала – он не печатается на экране, это как если бы я набрал его и еще не ударил.

Есть ли способ сделать лучше? Есть ли способ попробовать «перепрыгнуть через плохие куски» tarball?

С --ignore-zeros tar, кажется, читает весь файл tar.

 tar -R --ignore-failed-read --ignore-command-error --ignore-zeros -xvf tarball.tar [...] block 3670356: ** Block of NULs ** block 3670357: ** Block of NULs ** block 3670358: ** Block of NULs ** block 3670359: ** End of File ** tar: Exiting with failure status due to previous errors 

Существует много ошибок Block of NULs поэтому похоже, что содержимое может быть безвозвратным.

One Solution collect form web for “Восстановление поврежденного tarball”

Вы не используете tar но gtar и сообщение об ошибке:

tar: Archive contains obsolescent base-64 headers

связан с известной ошибкой в gtar , о которой неоднократно сообщается с более чем 20 лет. В прошлом произошли изменения в источнике, что сделало эту проблему менее вероятной, но эти изменения еще не зафиксировали связанную с этим проблему в gtar .

Если вы хотите проверить свой архив, вы можете использовать tartest из пакета star , и вы можете попытаться использовать звезду для извлечения архива и star -i если эта звезда сообщает об ошибках.

  • tar не находит файл в архиве, в зависимости от команды, использованной для его извлечения
  • Как восстановить файл tar, где stderr был смешан с stdout?
  • Как распаковать набор файлов в каталоге?
  • Можно ли перечислить все файлы в файле * .tar.gz без сканирования всего содержимого?
  • Сжатие нескольких файлов в разных папках без структуры папок
  • Несколько tar-процессов одновременно записываются в один и тот же архив
  • Сценарий Bash для автоматического резервного копирования tar выбранных файлов и каталогов
  • Как разблокировать файл, пропуская начало структуры каталогов?
  • Обновление tar.gz ежедневно только с измененными файлами
  • Самораспаковывающиеся скрипты: tar -xO и dd
  • Найти файлы с тем же именем, но с разными расширениями, отправить в tgz
  • Linux и Unix - лучшая ОС в мире.