パーツが欠落しているマルチパートrarを抽出する方法は?


12

私はその中に.rar単一の.tar.gzファイルを含むマルチパートアーカイブを持っています(理由は尋ねないでください、それはまさにそれが作られた方法です)。一部のパーツが欠けていますが、最初のパーツはあります。.tar.gzなるべく多く抽出したい。どうやってやるの?

実行するunrar x -kb file.part1.rarと、常に.tar.gzfrom の先頭が抽出され、part1そこでエラーで停止します。任意のツールを試してみてうれしいです(慣れる必要はありません)。


1
明らかに、あなたはそのがそうでなければ仕事に行くのではない、全体の事を必要とする
ザ・シッケスト

1
まあ、彼は「できるだけ」を望んでいると言います。ただし、単純なファイル形式(ビットマップ?)でない限り、彼が抽出したものはすべて使用できない可能性が非常に高くなります。
WindowsEscapist 2014年

内部に多くのファイルを含む別のアーカイブがある場合、彼はいくつかのファイルを回復できる可能性があります。トリックは、WinRarをできるだけ抽出することです。
davidbaumann 2014年

2
なぜ人々が質問に反対票を投じるのか理解できません。彼らが理解できないからです。
davidbaumann 2014年

それであなたは解決策を見つけて私たちと共有しましたか?
davidbaumann、2015

回答:


2

Windowsにも同様の機能があり、10個のうち1、5、6、9、10個のパーツがありましたが、2、3、4、7、8個のパーツがありませんでした。

  1. 7zipを使用して、持っているパーツを抽出し、それに応じて名前を変更します。つまり、pt1 pt5 pt6などです。

  2. ヌル(ゼロ)ファイルを生成して、欠落しているパーツを埋め、抽出した各パーツの正確なサイズをバイト単位で使用して(つまり、pt5とpt6のサイズと同じpt1のサイズ...):

    fsutilファイルcreatenew [path_to_file] [size_in_bytes]

    私の場合、私は使用しました:

    fsutilファイルcreatenew C:\ TMP \ empty 1022701562

  3. ファイルを連結する(バイナリファイルの場合は/ bを使用)

    / b file1 + file2 + file3 targetfileをコピー

    私の場合:

    / b pt1 + empty + empty + empty + pt5 + pt6 + empty + empty + pt9 + pt10 output_fileをコピー

それが行われたとき、私はデリュージのビットトレントクライアントにファイルをロードし、強制的に再チェックしましたが、私が本当に持っていないパーセンテージだけを見逃していました。追加されました。


説明書がよくわかりません。7zipから「持っているパーツを抽出」するにはどうすればよいですか?7z %fileすべてのパーツファイルをロードしようとし、それらの1つが既に存在しない場合はエラーを返します。急流とは一体何をしているのですか?Delugeを使用して、連結されたバイナリから個々の元の圧縮ファイルを抽出できますか?
cduguet

5

これはおそらくもう関係ないでしょうが、私は同じ問題を抱えていて、私にとってはうまくいく簡単な解決策を見つけたので、共有した方がいいと思いました。

パスワードで保護されたRARアーカイブを6つのパートに分けましたが、パート4がありませんでした。WinRARの「修復」機能を使用しようとしましたが、リカバリレコードが見つからなかったと表示されました。私は上記の方法を試しましたが、それらは機能せず、不足している部分が始まる場所で抽出が常に停止しました。

最後に、WinRARをだましてパート5と6をだまし、別のアーカイブを "archive.part1.rar"と "archive.part2.rar"に名前を変更することにしました。次に、WinRARに新しいパート1を抽出するように指示しました。新しいパート1の先頭で終了したファイルを抽出できなかったというエラーメッセージが表示されました(欠落したパート4から一部のデータが欠落していたため)。元のパート5と6から他のすべてのファイルを抽出できました。

これが将来同じ問題を抱える他の人々の助けになることを願っています。


1

私は100Mbパーツ、パーツ3が欠落していると想定しています。あなたが試すことができます

cat blubb.part01.rar blubb.part02.rar blubb.part04.rar > blubb.rar

また、私は試してみますが、これはうまく機能し、WinRarにファイルが破損していると思わせるかもしれません。

dd if=/dev/zero of=blubb.part03.rar bs=1M count=100
cat blubb.part01.rar blubb.part02.rar blubb.part03.rar blubb.part04.rar > blubb.rar

良いアイデア、それらを試してみました。1.既存のすべてのパーツが連結されている場合、unrarはまったく同じ場所で失敗します(CRCエラー)。2.後のパーツを欠落したパーツと同じ名前にコピーすると、同じ場所で失敗しますが、後のパーツを処理していることを示すメッセージが表示されます(別のファイルの開始を探している可能性があります)。 ddですべて0のファイルを作成すると、「Bad archive」で失敗する
Alex I

また、すべて0のファイルを作成して連結すると、同じ場所で「ボリュームが見つかりません」で失敗します
Alex I

考えているだけですcat blubb.rar | unrar > file.tgz
davidbaumann 2014年


1

手順1:ファイルの名前を変更します。次に例を示します。

file.part1.rar -> fileA.rar
file.part2.rar -> fileB.rar
file.part3.rar -> fileC.rar
etc..

ステップ2:7-Zipを使用して各ファイルを抽出します。

利益!

(状況によっては、名前を変更する必要はなく、7-Zipにすべてのファイルを抽出させることができます。)


3
これは、複数のパーツファイルにまたがるファイルには役立ちません。
Rohit Gupta

7-Zipを使用して、名前を変更した各ファイルを1つずつ抽出しようとしましたか?
サイチョイ

1

私は2つのパートのrarアーカイブの2番目のパートしか持っていませんでしたが、予想通りにパート2を解凍すると、最初のパートが見つからないというメッセージが表示されました。また、パート2のコンテンツ全体がフォルダに展開されていることに気付きました。そのため、winrarのポップアップメッセージに触れずに、解凍したファイルを別のフォルダーにコピーしてから、winrarのポップアップメッセージで[閉じる]をクリックしました。解凍されたコンテンツはwinrarによって削除されましたが、以前に別のフォルダーにコピーしたため、その別のフォルダーから解凍されたコンテンツを使用できました。


0

7-zipはマルチパートrarからファイルの一部を抽出し、ddでそれらをステッチすることができます。たとえば、最初と最後のrar-partsがある場合:

7z x p1.rar
mv dir p1  # rename out of the way
7z x plast.rar
unrar l p1.rar
   # note the file size of the entire file
ls -l dir/file  # note the size of the last part
dd if=dir/file of=p1/file  conv=notrunc  bs=1 seek=$((full_size - lastpart_size))

求めるオフセットが素数でない場合は、1より大きいブロックサイズを使用します。 出力ブロックサイズの倍数にddしかできませんseekdd本当に負いませんreadし、writeそのブロックサイズでシステムコールが、そうbs=1本当に吸います。

大きいibs(入力ブロックサイズ)はseekobs(出力ブロックサイズ)の単位であるため、CPU時間を半分節約します。あるいは、任意のバイト位置にシークして通常サイズのI / Oを実行できる他のツールがあるかもしれません。または、これをスクリプト化している場合は、bs=1最大32k境界でddできます。tail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.