web-dev-qa-db-ja.com

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

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

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

12
Alex I

windowsでも同様のことがありましたが、10のうちの1、5、6、9、10の部分がありましたが、2、3、4、7、8の部分がありませんでした。

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

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

    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をコピー

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

2
Nben

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

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

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

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

5
magogo200

私は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
davidbaumann

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

1
AR Augustine

ステップ1:ファイルの名前を変更します。例:

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

手順2: 7-Zip を使用して各ファイルを抽出します。

利益!

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

1
cychoi

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は、出力ブロックサイズの倍数にのみseekできます。 ddは、実際にreadおよびwriteシステムコールをそのブロックサイズで実行するため、_bs=1_は非常に問題があります。

ibsseek(出力ブロックサイズ)の単位であるため、obs(入力ブロックサイズ)を大きくすると、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) ))

0
Peter Cordes