Bagaimana cara mengekstrak multipart rar dengan bagian yang hilang?


12

Saya memiliki .rararsip multi bagian yang berisi satu .tar.gzfile di dalamnya (jangan tanya mengapa, begitulah dibuatnya). Saya kehilangan beberapa bagian, tetapi memiliki bagian pertama. Saya ingin mengekstrak sebanyak .tar.gzmungkin. Bagaimana saya bisa melakukan itu?

Jika saya jalankan unrar x -kb file.part1.rarselalu mengekstrak awal .tar.gzdari part1dan berhenti di sana dengan kesalahan. Saya senang mencoba alat apa pun (tidak harus unrar).


1
jelas, Anda perlu semuanya, itu tidak akan berhasil sebaliknya
Sickest

1
Yah, dia bilang dia ingin "sebanyak mungkin". Namun, sangat mungkin bahwa apa pun yang dia ekstrak tidak akan dapat digunakan, kecuali format file yang sederhana (bitmap?).
WindowsEscapist

Jika ada arsip lain di dalamnya yang berisi banyak file, ia mungkin dapat memulihkan beberapa file. Caranya adalah dengan membuat ekstrak WinRar sebanyak mungkin.
davidbaumann

2
Saya tidak mengerti mengapa orang memilih pertanyaan, hanya karena mereka tidak mengerti.
davidbaumann

Jadi, apakah Anda menemukan solusi, dan berbagi dengan kami?
davidbaumann

Jawaban:


2

Saya memiliki hal serupa di windows , ketika saya memiliki bagian 1,5,6,9,10 dari 10. Saya kehilangan bagian 2,3,4,7,8.

  1. gunakan 7zip untuk mengekstrak bagian yang Anda miliki, dan ganti namanya sesuai dengan itu. yaitu: pt1 pt5 pt6, dll.

  2. menghasilkan file nol (nol) untuk mengisi bagian yang hilang, menggunakan ukuran yang tepat dalam byte dari masing-masing bagian yang Anda miliki dan diekstraksi (yaitu ukuran pt1 yang sama dengan ukuran pt5 dan pt6 ...):

    file fsutil membuat [path_to_file] [size_in_bytes] baru

    dalam kasus saya, saya menggunakan:

    File fsutil dibuat C: \ TMP \ kosong 1022701562

  3. menyatukan file (menggunakan / b untuk file biner)

    salin / b file1 + file2 + file3 targetfile

    dalam kasus saya:

    copy / b pt1 + kosong + kosong + kosong + pt5 + pt6 + kosong + kosong + pt9 + pt10 output_file

ketika selesai, saya memuat file dalam klien bittorrent Deluge, dan dipaksa memeriksa kembali, dan saya hanya kehilangan persentase yang sebenarnya tidak saya miliki, artinya klien bittorrent mengidentifikasi bahwa saya memiliki informasi yang benar antara semua nol yang saya ditambahkan.


Saya tidak mengerti instruksinya dengan baik. Bagaimana Anda 'mengekstrak bagian yang Anda miliki' dari 7zip? 7z %filemencoba memuat semua file bagian dan mengembalikan kesalahan jika salah satunya sudah hilang. Apa yang harus dilakukan dengan torrents? Bisakah saya mengekstrak file terkompresi asli individual dari biner gabungan menggunakan Deluge?
cduguet

5

Ini mungkin tidak relevan lagi, tetapi saya hanya memiliki masalah yang sama dan menemukan solusi sederhana yang bekerja untuk saya dan saya pikir itu akan baik untuk dibagikan.

Saya memiliki arsip RAR yang dilindungi kata sandi di 6 bagian, tetapi part4 tidak ada. Saya mencoba menggunakan fungsi "perbaikan" WinRAR tetapi katanya tidak dapat menemukan catatan pemulihan. Saya mencoba metode di atas tetapi tidak berhasil dan ekstraksi selalu berhenti di mana bagian yang hilang dimulai.

Akhirnya, saya memutuskan untuk membodohi WinRAR dengan memikirkan bagian 5 dan 6 di mana arsip berbeda dan menamainya dengan "archive.part1.rar" dan "archive.part2.rar". Saya kemudian mengatakan kepada WinRAR untuk mengekstrak bagian 1 yang baru dan meskipun saya mendapat pesan kesalahan yang mengatakan itu tidak dapat mengekstrak file yang berakhir di awal bagian 1 yang baru (karena kehilangan beberapa data dari bagian yang hilang 4), itu berhasil mengekstrak semua file lain dari bagian asli 5 dan 6.

Saya harap ini akan membantu orang lain dengan masalah yang sama di masa depan.


1

Saya berasumsi 100MB bagian, bagian 3 hilang. Anda dapat mencoba

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

Saya juga akan mencoba, yang mungkin bekerja lebih baik dan membuat WinRar berpikir, file tersebut rusak:

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

Gagasan bagus, mencobanya. 1. Jika semua bagian yang ada disatukan, unrar gagal (kesalahan CRC) di tempat yang sama persis. 2. Jika saya hanya menyalin bagian kemudian memiliki nama yang sama dengan bagian yang hilang, itu gagal di tempat yang sama, tetapi kemudian mencetak pesan yang menyiratkan itu sedang memproses bagian selanjutnya (mungkin mencari awal file lain) 3. Jika saya membuat file all-nol dengan dd, gagal dengan "Arsip buruk"
Alex I

Dan, jika saya membuat file nol semua dan menyatu, gagal di tempat yang sama dengan "Tidak dapat menemukan volume"
Alex I

Berpikir hanya: cat blubb.rar | unrar > file.tgz.
davidbaumann

Mungkin Anda ingin menggunakan WinRar untuk Windows
davidbaumann

1

Langkah 1: Ganti nama file, misalnya:

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

Langkah 2: Gunakan 7-Zip untuk mengekstrak setiap file.

Keuntungan!

(Dalam beberapa keadaan, penggantian nama tidak perlu dan Anda dapat membiarkan 7-Zip mengekstrak semua file untuk Anda.)


3
Ini tidak akan membantu dengan file yang menjangkau lebih dari satu file bagian.
Rohit Gupta

Sudahkah Anda mencoba mengekstraksi setiap file berganti nama satu per satu menggunakan 7-Zip?
cychoi

1

Saya hanya memiliki bagian kedua dari arsip rar dua bagian, sementara membongkar bagian 2 seperti yang diharapkan winrar muncul pesan mengatakan bagian pertama hilang; Saya juga memperhatikan bahwa konten lengkap dari bagian dua telah dibongkar di folder; jadi tanpa menyentuh pesan popup winrar, saya menyalin file yang belum dibuka ke folder lain dan kemudian mengklik di dekat pada pesan popup winrar; konten yang sudah dibongkar dihapus oleh winrar, tetapi karena saya telah menyalinnya sebelumnya ke folder yang berbeda, saya bisa menggunakan konten yang sudah dibongkar dari folder yang berbeda.


0

7-zip akan mengekstrak bagian file dari rar multi-bagian, dan kemudian Anda dapat menjahitnya kembali bersama dengan dd. Misalnya, jika Anda memiliki rar-bagian pertama dan terakhir:

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))

Jika offset yang Anda butuhkan tidak prima, maka gunakan ukuran blok yang lebih besar dari satu. ddhanya dapat seekmengalikan ukuran blok output. ddbenar-benar membuat readdan writepanggilan sistem dengan ukuran blok itu, jadi bs=1sangat menyebalkan.

Besar ibs(ukuran blok input) akan menghemat separuh waktu CPU, karena seekdalam satuan obs(ukuran blok output). Atau mungkin ada beberapa alat lain yang dapat mencari ke posisi byte sewenang-wenang dan kemudian melakukan I / Os berukuran normal. Atau jika Anda membuat skrip ini, Anda dapat bs=1menemukan hingga 32k, maka mungkintail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.