У меня есть файл на 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 +++
С выводом выше, действительно ли возможно, что я могу все еще восстановить его? Я просто не знаю, где запустить :(
Сначала Вы создали 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.