Mam w nim wieloczęściowe .rar
archiwum zawierające pojedynczy .tar.gz
plik (nie pytaj dlaczego, tak właśnie powstał). Brakuje mi kilku części, ale mam pierwszą część. Chciałbym wydobyć jak najwięcej .tar.gz
. Jak mogę to zrobić?
Jeśli uruchomić unrar x -kb file.part1.rar
to zawsze wydobywa początku .tar.gz
od part1
i zatrzymuje się tam z błędem. Cieszę się, że mogę wypróbować dowolne narzędzia (nie musi to być przypadkowe).
data-recovery
compression
tar
rar
winrar
Alex I.
źródło
źródło
Odpowiedzi:
Miałem podobną sytuację w systemie Windows , kiedy miałem części 1,5,6,9,10 na 10. Brakowało mi części 2,3,4,7,8.
użyj 7zip, aby wyodrębnić posiadane części i odpowiednio zmień ich nazwy. tj .: pt1 pt5 pt6 itp.
wygeneruj plik zerowy (zero), aby wypełnić brakujące części, używając dokładnego rozmiaru w bajtach każdej z części, które masz i wyodrębniłeś (tj. rozmiar pt1, który jest taki sam jak rozmiar pt5 i pt6 ...):
w moim przypadku użyłem:
połączyć pliki (używając / b dla plików binarnych)
w moim przypadku:
kiedy to zostało zrobione, załadowałem plik do klienta Potop bittorrent i wymusiłem ponowne sprawdzenie, i brakowało mi tylko procentu, którego tak naprawdę nie miałem, co oznacza, że klient bittorrent stwierdził, że mam prawdziwe informacje między wszystkimi zerami I dodany.
źródło
7z %file
próbuje załadować wszystkie pliki części i zwraca błąd, jeśli brakuje jednego z nich. Co to wszystko ma wspólnego z torrentami? Czy mogę wyodrębnić pojedyncze oryginalne skompresowane pliki z połączonego pliku binarnego za pomocą Potopu?Prawdopodobnie nie jest to już istotne, ale właśnie miałem ten sam problem i znalazłem proste rozwiązanie, które zadziałało dla mnie i pomyślałem, że warto się nim podzielić.
Miałem chronione hasłem archiwum RAR w 6 częściach, ale brakowało części 4. Próbowałem użyć funkcji „naprawy” WinRAR, ale powiedziała, że nie można znaleźć rekordu odzyskiwania. Próbowałem powyższych metod, ale one nie działały, a ekstrakcja zawsze kończyła się tam, gdzie zaczynała się brakująca część.
W końcu postanowiłem oszukać WinRAR do myślenia w częściach 5 i 6, w których inne archiwum, i przemianowałem je na „archive.part1.rar” i „archive.part2.rar”. Następnie powiedziałem WinRARowi, aby wyodrębnił nową część 1 i mimo że otrzymałem komunikat o błędzie, informujący, że nie można wyodrębnić pliku, który zakończył się na początku nowej części 1 (ponieważ brakowało danych z brakującej części 4), udało się wyodrębnić wszystkie pozostałe pliki z oryginalnych części 5 i 6.
Mam nadzieję, że pomoże to innym osobom z tym samym problemem w przyszłości.
źródło
Zakładam, że 100 Mb części, brak części 3. Możesz spróbować
również spróbuję, co może działać lepiej i sprawić, że WinRar pomyśli, plik jest uszkodzony:
źródło
cat blubb.rar | unrar > file.tgz
.Krok 1: Zmień nazwę plików, na przykład:
Krok 2: Użyj 7-Zip, aby wyodrębnić każdy plik.
Zysk!
(W niektórych okolicznościach zmiana nazwy jest zbędna i możesz zezwolić 7-Zip na wyodrębnienie wszystkich plików.)
źródło
Miałem tylko drugą część dwuczęściowego archiwum rar, podczas gdy rozpakowywanie części 2 zgodnie z oczekiwaniami winrar wyświetlił komunikat informujący o braku pierwszej części; Zauważyłem również, że pełna zawartość części drugiej została rozpakowana w folderze; więc nie dotykając wyskakującego komunikatu winrar, skopiowałem rozpakowane pliki do innego folderu, a następnie kliknąłem zamknij w wyskakującym oknie winrar; rozpakowana zawartość została usunięta przez winrar, ale ponieważ wcześniej skopiowałem je do innego folderu, mogłem użyć rozpakowanej zawartości z tego innego folderu.
źródło
7-zip wyodrębni część pliku z wieloczęściowego pliku rar, a następnie możesz połączyć je z powrotem za pomocą dd. Na przykład, jeśli masz pierwszą i ostatnią część rar:
Jeśli przesunięcie, którego potrzebujesz, nie jest liczbą pierwszą, użyj rozmiaru bloku większego niż jeden.
dd
może tylkoseek
do wielokrotności wielkości bloku wyjściowego.dd
naprawdę wykonujeread
iwrite
wywołuje systemowe z tym rozmiarem bloku, więcbs=1
naprawdę jest do kitu.Duży
ibs
(rozmiar bloku wejściowego) zaoszczędziłby połowę czasu procesora, ponieważseek
jest wyrażony w jednostkachobs
(rozmiar bloku wyjściowego). A może istnieje jakieś inne narzędzie, które może szukać dowolnej pozycji bajtu, a następnie wykonywać operacje we / wy normalnej wielkości. Lub jeśli piszesz to, możesz dd zbs=1
wyrównaniem do 32k, to możetail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))
źródło