Eksik parçalarla çok parçalı rar nasıl çıkarılır?


12

İçinde .rartek bir .tar.gzdosya içeren çok parçalı bir arşivim var (nedenini sormayın, bu nasıl yapıldığıdır). Birkaç parçayı kaçırıyorum, ama ilk kısmı var. .tar.gzMümkün olduğunca fazla çıkarmak istiyorum. Bunu nasıl yapabilirim?

Koşarsam unrar x -kb file.part1.rarher zaman başlangıcını ayıklar .tar.gzgelen part1ve bir hata ile orada durur. Herhangi bir aleti denemekten mutluluk duyuyorum (unrar olmak zorunda değil).


1
Açıkçası, her şeye ihtiyacınız var, aksi halde çalışmayacak
Sickest

1
"Mümkün olduğunca" istediğini söylüyor. Ancak, basit bir dosya biçimi (bitmap?) Olmadıkça, ayıkladığı her şey kullanılabilir olmayacaktır.
WindowsEscapist

İçinde çok sayıda dosya içeren başka bir arşiv varsa, bazı dosyaları kurtarabilir. Hile sadece WinRar özü mümkün olduğunca yapmaktır.
davidbaumann

2
İnsanların soruları neden oy kullandıklarını anlamıyorum, sırf anlamıyorlar.
davidbaumann

Öyleyse bir çözüm buldunuz ve bizimle paylaştınız mı?
davidbaumann

Yanıtlar:


2

Pencerelerde de benzer bir şey vardı. 10 üzerinden 1,5,6,9,10 parçaya sahipken 2,3,4,7,8 parça eksikti.

  1. Sahip olduğunuz parçaları çıkarmak için 7zip kullanın ve uygun şekilde yeniden adlandırın. örn .: pt1 pt5 pt6 vb.

  2. Yaptığınız ve ayıkladığınız parçaların her birinin bayt cinsinden tam boyutunu kullanarak eksik parçaları doldurmak için boş (sıfır) dosya oluşturun (yani, pt5 ve pt6 boyutuyla aynı olan pt1 boyutu ...):

    fsutil dosyası yeni oluşturuldu [path_to_file] [size_in_bytes]

    benim durumumda kullandım:

    fsutil dosyası createnew C: \ TMP \ empty 1022701562

  3. dosyaları bitiştir (ikili dosyalar için / b kullanarak)

    copy / b file1 + file2 + file3 targetfile

    benim durumumda:

    kopyala / b pt1 + boş + boş + boş + pt5 + pt6 + boş + boş + pt9 + pt10 output_file

tamamlandığında, dosyayı Deluge bittorrent istemcisine yükledim ve tekrar kontrol ettim ve sadece gerçekten sahip olmadığım yüzdeyi kaçırdım, yani bittorrent istemcisi tüm sıfırlar arasında gerçek bilgilere sahip olduğumu belirledi. katma.


Talimatları çok iyi anlamıyorum. 7zip'ten 'sahip olduğunuz parçaları nasıl çıkarıyorsunuz? 7z %filetüm parça dosyalarını yüklemeye çalışır ve bunlardan biri eksikse bir hata döndürür. Torrentlerle her şey ne işe yarar? Deluge kullanarak tek tek sıkıştırılmış orijinal dosyaları birleştirilmiş ikili dosyadan ayıklayabilir miyim?
cduguet

5

Bu muhtemelen artık geçerli değil, ama ben sadece aynı sorunu yaşadım ve benim için çalışan ve paylaşmak güzel olacağını düşündüm basit bir çözüm buldum.

6 bölümde şifre korumalı bir RAR arşivim vardı, ama part4 eksikti. WinRAR'ın "onarım" işlevini kullanmaya çalıştım, ancak kurtarma kaydını bulamadığını söyledi. Yukarıdaki yöntemleri denedim ama işe yaramadı ve çıkarma, eksik parçanın başladığı yerde durdu.

Son olarak, farklı bir arşivin WinRAR'ı düşünme bölümleri 5 ve 6'ya kandırmaya karar verdim ve bunları "archive.part1.rar" ve "archive.part2.rar" olarak yeniden adlandırdım. Daha sonra WinRAR'a yeni bölüm 1'i çıkarmasını söyledim ve yeni bölüm 1'in başında biten dosyayı ayıklayamadığını söyleyen bir hata mesajı almama rağmen (eksik bölüm 4'ten bazı veriler eksik olduğu için), diğer tüm dosyaları orijinal parça 5 ve 6'dan çıkarmayı başardı.

Umarım bu aynı problemi olan diğer insanlara gelecekte yardımcı olacaktır.


1

Sanırım 100Mb parça, bölüm 3 eksik. Deneyebilirsin

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

Ayrıca daha iyi çalışabilir ve WinRar düşünmek, dosya bozuk olabilir denemek istiyorsunuz:

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

İyi fikirler, onları denedim. 1. Mevcut tüm parçalar birleştirilirse, unrar aynı yerde başarısız olur (CRC hatası). 2. Daha sonraki bir parçayı eksik parçayla aynı ada sahip olacak şekilde kopyalarsam, aynı yerde başarısız olur, ancak daha sonra parçaları işlediğini ima eden mesajlar yazdırır (belki başka bir dosyanın başlangıcını arıyor olabilir) 3. Eğer dd ile bir sıfırlar dosyası oluşturursam, "Kötü arşiv" ile başarısız
Alex I

Ve tamamen sıfırlar dosyası oluşturup birleştirirsem, "Birim bulunamıyor" ile aynı yerde başarısız oluyor
Alex I

Sadece düşünce: cat blubb.rar | unrar > file.tgz.
davidbaumann


1

Adım 1: Dosyaları yeniden adlandırın, örneğin:

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

Adım 2: Her dosyayı ayıklamak için 7-Zip kullanın .

Kar!

(Bazı durumlarda, yeniden adlandırma gereksizdir ve 7-Zip'in tüm dosyaları sizin için ayıklamasına izin verebilirsiniz.)


3
Bu, birden fazla parça dosyasına yayılan dosyalarda yardımcı olmaz.
Rohit Gupta

Yeniden adlandırılan her dosyayı 7-Zip kullanarak tek tek çıkarmaya çalıştınız mı?
cychoi

1

Beklenen winrar ilk bölümün eksik olduğunu belirten bir mesaj attı gibi 2. bölümünü açmak iken, iki bölüm rar arşiv sadece ikinci bölümü vardı; Ayrıca ikinci bölümün tüm içeriğinin klasörde açıldığını fark ettim; bu yüzden winrar'ın açılır mesajına dokunmadan, açılmış dosyaları başka bir klasöre kopyaladım ve sonra winrar'ın açılır mesajında ​​kapat'a tıkladım; paketten çıkarılan içerik winrar tarafından silindi, ancak daha önce farklı bir klasöre kopyaladığımdan, paketten çıkarılan içeriği o farklı klasörden kullanabilirim.


0

7-zip, bir dosyanın parçasını çok parçalı bir rar'den ayıklar ve daha sonra bunları dd ile birleştirebilirsiniz. Örneğin, ilk ve son rar parçalarına sahipseniz:

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

Aramanız gereken ofset asal değilse, birden büyük bir blok boyutu kullanın. ddyalnızca seekçıkış bloğu boyutunun katlarına kadar olabilir . ddgerçekten bu blok boyutu ile arama yapar readve writesistem çağrıları, bu yüzden bs=1gerçekten berbat.

Büyük bir ibs(giriş bloğu boyutu) (çıkış bloğu boyutu) seekbirimlerinde olduğu için CPU süresinin yarısını koruyacaktır obs. Ya da belki de keyfi bir bayt pozisyonu arayabilen ve daha sonra normal boyutlu I / O'lar yapabilen başka bir araç var. Veya bunu senaryo yazıyorsanız bs=1, 32k'ye kadar hizaya sahip olabilirsiniz, o zaman belkitail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.