Восстановите Огромный и Поврежденный файл Gzip

У меня есть файл на 50,9 ГБ, который является резервным копированием моей домашней папки на Ubuntu 12.04. Я сжал этот файл с помощью tar на Терминале от моего sda (ext4) диск к sdb (ext4). Команда, которую я использовал, была

tar cvfz /media/2ndHDD/home.tar /home/<my_username>

Я получал эту ошибку после сжатия:

tar: Exiting with failure status due to previous errors.

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

После этого я установил новую ОС, которая является Ubuntu 14.04 к моему диску sda. После установки я делал попытку к untar файла, который я сжал только что при помощи этого

tar xvf home.tar

но я получаю эту ошибку:

gzip: stdin: invalid compressed data--format violated
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

Таким образом, я попробовал к gzip использование файла

gzip home.tar

и ожидал в течение почти 1 часа для окончания. И после этого, я распаковал его снова использующий gzip на этот раз.

tar -xvzf home.tar.gz

Процесс просто не может закончиться и остановится после 15 минут, который оставляет созданную 'домашнюю' папку неполной из файлов, которые я ожидаю. Я повторил процесс много раз, но действительно не закончу.

Есть ли какой-либо способ, которым я могу восстановить этот огромный сжатый файл? Я уже попробовал gzrecover (http://fosshelp.blogspot.com/2013/04/howto-recover-corrupted-targz-file.html), но всегда перестал работать. Могло также быть возможно, что я уже потерял свои файлы, когда я попытался преобразовать его в gzip? Я действительно сожалею, почему я только не скопировал домашнюю несжатую папку.:(

ОБНОВЛЕНИЕ: Сейчас, я попытался преобразовать его назад в tar при помощи этой команды

gzip -d home.tar.gz

и распакованный это путем выполнения

tar xvf home.tar

теперь я получаю эту ошибку:

gzip: stdin: invalid compressed data--format violated
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

И даже просто список вниз файлов в файле tar не закончит обрабатывать

tar -tvf home.tar

Я все еще получу ту же ошибку выше

ОБНОВЛЕНИЕ (01/11/2015): Я пытался работать strace gunzip home.tar.gz и приблизительно после 15-20 минут я получал их:

read(3, "\231\300\2678\242p\206\371\341\322\352\312\374\271?\252.\1775sC\330|D$PF$\10r\362V"..., 32768) = 32768
write(4, "\256Y\341\224\362Nn\315\316\373>\31\202\275c\373\266\265\345\27 R\312\2\221b'6\263\321\10F"..., 32768) = 32768
read(3, "[\366\"\r\265\244\3s\201\223b\n\267\364\34\247Ej\210tF\22\255B\254\223\216E\26\242\321\210"..., 32768) = 32768
write(4, "\n1g\201\\m\231\364\352@\"%\207\"Q+\37a^!8\226\233\204\244\v\334&i\361\2a"..., 32768) = 32768
read(3, "\222\327\351\337(\376\376?\246AzC\371\231\200${V\361\310W9.\3571a\362\357\251\306o\234"..., 32768) = 32768
write(4, "\346\216sH\250\272\264T\335\356<?\377\266\272o{\32\21\264\367\34\377w\327\220\324\313\231\2775\337"..., 32768) = 32768
read(3, "\266\276\345\213\277}G\235\355\360\326\232\244\353Z\\\215\222g\354\202\356\351\303G~\210\363b\31\17P"..., 32768) = 32768
write(4, "\326!1\332\213\253\276\327\222<\345\25\210\366\266\337uSkj>\345$\257\225\2q\321^8Jk"..., 32768) = 32768
read(3, "~D\212\373\372\"\373\367m0\322%\365S\377\335\331\336\376RB\037727e'\371#S\224\223"..., 32768) = 26366
read(3, "", 6402)                       = 0
write(4, "\23\320\"\0059\24\20\"\5#M\210I\323\320\363T\220N\321\301\207\\\327(I\204\362\371\377\32!"..., 32768) = 32768
write(4, " \6\325\33\246\324\35\240h\225B\270\312\207\211\340)\314\27\17\"pv\2232?\"0Sez\247"..., 14402) = 14402
close(3)                                = 0
utimensat(4, NULL, {{1420884866, 686801693}, {1420818997, 36136000}}, 0) = 0
fchown32(4, 1000, 1000)                 = 0
fchmod(4, 0666)                         = 0
close(4)                                = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT PIPE TERM XCPU XFSZ], [], 8) = 0
unlink("home.tar.gz")                   = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
_llseek(0, 0, 0xbf8c86a0, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

С выводом выше, действительно ли возможно, что я могу все еще восстановить его? Я просто не знаю, где запустить :(

0
задан 10 January 2015 в 19:56

1 ответ

Сначала Вы создали gzipped архив tar с:

tar cvfz /media/2ndHDD/home.tar /home/<my_username>

Вы проигнорировали ошибки и не прокручивали для наблюдения то, чем они были (довольно плохая идея). Тогда Вы пытались распаковать файл tar (даже без-z опции, он должен был распознать, что это - gzipped архив tar):

tar xvf home.tar

Это не работало, и Вы уже сжались сжатый (с тем же алгоритмом сжатия) архив. Можно ли объяснить мыслительный процесс здесь?

gzip home.tar

Тогда Вы пытались распаковать gzipped tarball, который был gzipped снова:

tar -xvzf home.tar.gz

Позволяют мне спросить - Вы знаете то, чего Вы пытаетесь достигнуть, или это все просто пробует случайные команды, "давайте посмотрим то, что происходит" без уделения внимания, что они на самом деле делают?

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

На этот раз, я попытался бы увидеть в первый раз, каков Ваш фактический формат Вашего архива (или что оставляют его). Используйте:

file <archive_file>

, Если это - действительно gzipped архив tar и это бросает те ошибки, я боюсь, что Вы являетесь неудачливыми.

ОБНОВЛЕНИЕ: Я считал, что текущий файл, который Вы имеете, является архивом gzip:

home.tar: gzip compressed data, from Unix, last modified: Fri Jan  9 22:07:25 2015.

Удостоверяются, что Вы имеете, в зависимости от типа сжатых данных, я предполагаю в 4 раза больше свободного пространства на разделе, где Вы делаете это. Переместите home.tar за пределами / корневого каталога, если это уже не где-то в другом месте.

Выполнение следование его как последнее средство для распаковки его:

gunzip -c home.tar > home1.tar
file home1.tar

команда Fist попытается разархивировать home.tar файл в home1.tar. Другой скажет Вам, каков home1.tar на самом деле. Это мог все еще быть другой архив gzip.

, Если file говорит, что это - gzipped данные, выполненные:

gunzip -c home1.tar > home2.tar

Удостоверяются, что Вы обращаете внимание на имена файлов. Узнайте то, что home2.tar теперь:

file home2.tar

Снова, если это - gzipped данные, выполняет gunzip на нем снова как выше, на этот раз перенаправляя к home3.tar. Выполненный file на нем снова.

, Если это говорит:

homeX.tar: POSIX tar archive (GNU)

Попытка, перечисляющая ее содержание с:

tar taf homeX.tar

и если это работает, попытайтесь распаковать файл tar.

3
ответ дан 6 October 2019 в 04:48

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

Похожие вопросы: