Вы можете попробовать утилиту gzrecover, а затем извлечь восстановленный архив с помощью cpio.
Это помогло восстановить поврежденные архивы в прошлом, но ваш пробег может отличаться. У меня проблема, когда он не может восстановить архив для меня, так что честное предупреждение.
РЕДАКТИРОВАТЬ: модом яростно угрожает мне ножом, я добавлю некоторые детали, как я восстановил архивы заранее. (Шучу. Не делай мне больно, @ Scott!)
Вы можете установить оба пакета, используя
sudo apt-get install cpio gzrt
Убедившись, что оба пакета установлены, приступим к работе.
Во-первых, разместите свой архив там, где вы не против извлечения данных. Оттуда вы можете запустить
gzrecover broken-archive.tar.gz
gzrecover, вероятно, займет некоторое время, в зависимости от размера архива. Однако, если повезет, вы увидите «broken-archive.tar.recovered» в том же каталоге после завершения операции.
Восстановленный архив, вероятно, также получил некоторый ущерб; Здесь пригодится cpio. Он должен быть уже установлен в вашей системе.
Чтобы извлечь восстановленный архив, используйте
cpio -F broken-archive.tar.recovered -i -v
Имейте в виду, что в течение этого времени cpio будет выдавать большое количество информации. Я рекомендую вам делать это на отдельном tty целиком, а не на терминале в вашей X-сессии. Чтобы сделать это, вы можете просто нажать CTRL+ALT+F1 и ваш экран переключится на терминал. Чтобы вернуться к сеансу X, нажмите CTRL+ALT+F8 (может отличаться, но обычно это F7-9).
Процесс извлечения восстановленного архива также будет довольно интенсивным. Поскольку cpio не оптимизирован для использования с несколькими ядрами, он будет привязан к одному ядру. Независимо от того, на каком ядре оно закреплено, оно, вероятно, закрепит ядро на 100%. Если у вас двухъядерный компьютер, вам, возможно, придется некоторое время не использовать его.
Имейте в виду, что этот процесс может занять несколько дней, особенно учитывая размер архива. Либо найдите другую машину, чтобы перегрузить эту работу (более медленные процессоры будут делать это дольше), не планируйте использовать компьютер некоторое время, либо просто приготовьтесь к тому, что ваша система задохнется во время работы. Кроме того, если вы запустите это в терминале в сеансе X, вы, вероятно, закрепите второе ядро до 100%. Если вы опытный пользователь, вы можете использовать команду taskset
чтобы назначить процесс (ы) конкретному ядру. Однако это выходит за рамки моего ответа.
Я желаю вам удачи.