У меня есть многокомпонентный .rar
архив, содержащий один .tar.gz
файл внутри него (не спрашивайте почему, именно так оно и было сделано). Мне не хватает нескольких частей, но есть первая часть. Я хотел бы извлечь как можно больше из этого .tar.gz
. Как я могу это сделать?
Если я запускаю unrar x -kb file.part1.rar
его всегда извлекает начало .tar.gz
из part1
и останавливается там с ошибкой. Я счастлив попробовать любые инструменты (не должен быть unrar).
data-recovery
compression
tar
rar
winrar
Алекс я
источник
источник
Ответы:
У меня была похожая вещь на окнах , когда у меня были части 1,5,6,9,10 из 10. Мне не хватало частей 2,3,4,7,8.
используйте 7zip для извлечения частей, которые у вас есть, и соответственно переименуйте их. то есть: pt1, pt5, pt6 и т. д.
сгенерируйте нулевой (нулевой) файл, чтобы заполнить недостающие части, используя точный размер в байтах каждой из частей, которые вы ДЕЛАЕТЕ и извлекли (т.е. размер pt1, который равен размеру pt5 и pt6 ...):
в моем случае я использовал:
объединить файлы (используя / b для двоичных файлов)
в моем случае:
когда это было сделано, я загрузил файл в битторрент-клиент Deluge и принудительно перепроверил, и мне не хватало только процента, которого у меня действительно не было, то есть битторрент-клиент определил, что у меня есть истинная информация между всеми нулями, которые я добавлено.
источник
7z %file
пытается загрузить все файлы деталей и возвращает ошибку, если один из них уже отсутствует. Какое отношение все это имеет к торрентам? Могу ли я извлечь отдельные оригинальные сжатые файлы из сцепленного двоичного файла с помощью Deluge?Возможно, это больше не актуально, но у меня возникла та же проблема, и я нашел простое решение, которое сработало для меня, и подумал, что было бы неплохо поделиться.
У меня был защищенный паролем архив RAR в 6 частях, но часть 4 отсутствовала. Я пытался использовать функцию восстановления WinRAR, но он сказал, что не может найти запись восстановления. Я попробовал описанные выше методы, но они не работали, и извлечение всегда останавливалось там, где начиналась недостающая часть.
Наконец, я решил обмануть WinRAR в части мышления 5 и 6, где был другой архив, и переименовал их в «archive.part1.rar» и «archive.part2.rar». Затем я сказал WinRAR извлечь новую часть 1, и хотя я получил сообщение об ошибке, в котором говорилось, что он не может извлечь файл, который закончился в начале новой части 1 (так как в нем отсутствовали некоторые данные из отсутствующей части 4), ему удалось извлечь все остальные файлы из оригинальных частей 5 и 6.
Я надеюсь, что это поможет другим людям с той же проблемой в будущем.
источник
Я предполагаю, что 100Mb частей, часть 3 отсутствует. Можешь попробовать
также я бы попробовал, что могло бы работать лучше и заставить WinRar думать, что файл поврежден:
источник
cat blubb.rar | unrar > file.tgz
.Шаг 1: переименуйте файлы, например:
Шаг 2: Используйте 7-Zip для извлечения каждого файла.
Прибыль!
(В некоторых случаях переименование не требуется, и вы можете позволить 7-Zip извлечь все файлы для вас.)
источник
У меня была только вторая часть из двух частей rar архива, при распаковке части 2, как и ожидалось, winrar высветил сообщение о том, что первая часть отсутствует; Я также заметил, что все содержимое второй части было распаковано в папке; поэтому, не касаясь всплывающего сообщения winrar, я скопировал распакованные файлы в другую папку, а затем нажал кнопку «Закрыть» во всплывающем сообщении winrar; распакованное содержимое было удалено winrar, но поскольку я ранее скопировал их в другую папку, я мог использовать распакованное содержимое из этой другой папки.
источник
7-zip извлечет часть файла из rar, состоящего из нескольких частей, и затем вы сможете сшить их обратно вместе с dd. Например, если у вас есть первая и последняя rar-части:
Если смещение, к которому нужно стремиться, не является простым, используйте размер блока больше единицы.
dd
можно толькоseek
умножить на размер выходного блока.dd
действительно делаютread
иwrite
системные вызовы с этим размером блока, так что наbs=1
самом деле отстой.Большой
ibs
(размер входного блока) сэкономит половину процессорного времени, так какseek
выражается в единицахobs
(размер выходного блока). Или, может быть, есть какой-то другой инструмент, который может искать произвольную позицию байта, а затем выполнять операции ввода-вывода нормального размера. Или, если вы пишете это, вы можете использовать dd сbs=1
выравниванием до 32 Кб, тогда, возможно,tail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))
источник