Làm thế nào để trích xuất nhiều phần với các phần còn thiếu?


12

Tôi có một .rarkho lưu trữ nhiều phần chứa một .tar.gztệp duy nhất bên trong nó (đừng hỏi tại sao, đó chỉ là cách nó được tạo ra). Tôi đang thiếu một vài phần, nhưng có phần đầu tiên. Tôi muốn trích xuất càng nhiều .tar.gzcàng tốt. Làm thế nào tôi có thể làm điều đó?

Nếu tôi chạy, unrar x -kb file.part1.rarnó luôn trích xuất phần đầu của .tar.gztừ part1và dừng ở đó với một lỗi. Tôi rất vui khi thử bất kỳ công cụ nào (không phải là unrar).


1
rõ ràng, bạn cần tất cả mọi thứ, nó sẽ không hoạt động khác
Sickest

1
Chà, anh ta nói anh ta muốn "càng nhiều càng tốt". Tuy nhiên, rất có khả năng bất cứ thứ gì anh trích xuất sẽ không thể sử dụng được, trừ khi đó là định dạng tệp đơn giản (bitmap?).
WindowsEscapist

Nếu có một kho lưu trữ khác bên trong chứa nhiều tệp, anh ta có thể khôi phục một số tệp. Bí quyết là chỉ cần làm cho WinRar giải nén càng nhiều càng tốt.
davidbaumann

2
Tôi không hiểu tại sao mọi người bỏ phiếu, chỉ vì họ không hiểu.
davidbaumann

Vì vậy, bạn đã tìm thấy một giải pháp, và chia sẻ với chúng tôi?
davidbaumann 7/12/2015

Câu trả lời:


2

Tôi đã có một điều tương tự trên các cửa sổ , khi tôi có các phần 1,5,6,9,10 trên 10. Tôi bị thiếu các phần 2,3,4,7,8.

  1. sử dụng 7zip để giải nén các phần bạn có và đổi tên chúng cho phù hợp. tức là: pt1 pt5 pt6, v.v.

  2. tạo tập tin null (zero) để điền vào các phần còn thiếu, sử dụng kích thước chính xác theo byte của từng phần bạn có và trích xuất (tức là kích thước pt1 giống với kích thước của pt5 và pt6 ...):

    tạo tệp fsutil [path_to_file] [size_in_bytes]

    trong trường hợp của tôi, tôi đã sử dụng:

    Tạo tệp fsutil C: \ TMP \ trống 1022701562

  3. nối các tệp (sử dụng / b cho các tệp nhị phân)

    sao chép / b file1 + file2 + file3 targetfile

    trong trường hợp của tôi:

    sao chép / b pt1 + trống + trống + trống + pt5 + pt6 + trống + trống + pt9 + pt10 output_file

Khi hoàn thành, tôi đã tải tệp trong ứng dụng khách Delitt bittorrent và buộc kiểm tra lại và tôi chỉ thiếu phần trăm mà tôi thực sự không có, có nghĩa là ứng dụng khách bittorrent xác định rằng tôi có thông tin thật giữa tất cả các số không tôi thêm.


Tôi không hiểu hướng dẫn rất tốt. Làm thế nào để bạn 'giải nén các phần bạn có' từ 7zip? 7z %filecố gắng tải tất cả các tệp phần và trả về lỗi nếu một trong số chúng bị thiếu. Toàn bộ những gì để làm với torrent? Tôi có thể trích xuất các tệp nén ban đầu riêng lẻ từ tệp nhị phân được nối bằng Deluge không?
cduguet

5

Điều này có lẽ không còn phù hợp nữa, nhưng tôi chỉ gặp vấn đề tương tự và tìm thấy một giải pháp đơn giản phù hợp với tôi và nghĩ rằng nó sẽ rất tốt để chia sẻ.

Tôi đã có một kho lưu trữ RAR được bảo vệ bằng mật khẩu trong 6 phần, nhưng part4 bị thiếu. Tôi đã thử sử dụng chức năng "sửa chữa" của WinRAR nhưng họ nói rằng nó không thể tìm thấy bản ghi phục hồi. Tôi đã thử các phương pháp trên nhưng chúng không hoạt động và quá trình trích xuất luôn dừng ở nơi phần bị thiếu bắt đầu.

Cuối cùng, tôi quyết định đánh lừa WinRAR để suy nghĩ phần 5 và 6 trong đó một kho lưu trữ khác và đổi tên chúng thành "archive.part1.rar" và "archive.part2.rar". Sau đó, tôi đã nói với WinRAR để trích xuất phần 1 mới và mặc dù tôi đã nhận được thông báo lỗi nói rằng nó không thể trích xuất tệp kết thúc ở phần đầu của phần 1 mới (vì nó bị thiếu một số dữ liệu từ phần 4 bị thiếu), nó quản lý để trích xuất tất cả các tệp khác từ phần 5 và 6 ban đầu.

Tôi hy vọng điều này sẽ giúp những người khác có cùng vấn đề trong tương lai.


1

Tôi giả sử phần 100Mb, phần 3 bị thiếu. Bạn co thể thử

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

tôi cũng sẽ thử, có thể hoạt động tốt hơn và khiến WinRar nghĩ rằng, tệp bị hỏng:

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

Ý tưởng tốt, đã thử chúng ra. 1. Nếu tất cả các bộ phận hiện có được nối, unrar fail (lỗi CRC) tại cùng một vị trí. 2. Nếu tôi chỉ sao chép một phần sau để có cùng tên với phần bị thiếu, nó sẽ bị lỗi ở cùng một vị trí, nhưng sau đó in các thông báo ngụ ý rằng nó đang xử lý các phần sau (có thể đang tìm phần đầu của tệp khác) 3. Nếu tôi tạo một tệp toàn bộ bằng dd, nó sẽ thất bại với "Kho lưu trữ xấu"
Alex I

Và, nếu tôi tạo một tập tin số không và ghép nối, nó sẽ thất bại ở cùng một nơi với "Không thể tìm thấy âm lượng"
Alex I

Chỉ cần suy nghĩ : cat blubb.rar | unrar > file.tgz.
davidbaumann

Có thể bạn muốn sử dụng WinRar cho Windows
davidbaumann

1

Bước 1: Đổi tên các tệp, ví dụ:

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

Bước 2: Sử dụng 7-Zip để giải nén từng tệp.

Lợi nhuận!

(Trong một số trường hợp, việc đổi tên là không cần thiết và bạn có thể để 7-Zip giải nén tất cả các tệp cho bạn.)


3
Điều này sẽ không giúp với các tệp trải rộng hơn một phần tệp.
Rohit Gupta

Bạn đã thử trích xuất từng tệp được đổi tên lần lượt bằng 7-Zip chưa?
cychoi

1

Tôi chỉ có phần thứ hai của kho lưu trữ rar hai phần, trong khi giải nén phần 2 vì nhà máy rượu dự kiến ​​sẽ xuất hiện một thông báo nói rằng phần đầu tiên bị thiếu; Tôi cũng nhận thấy rằng toàn bộ nội dung của phần hai đã được giải nén trong thư mục; Vì vậy, không chạm vào tin nhắn bật lên của winrar, tôi đã sao chép các tệp đã giải nén vào một thư mục khác và sau đó nhấp vào đóng trong tin nhắn bật lên của winrar; nội dung đã giải nén đã bị winrar xóa, nhưng vì tôi đã sao chép chúng trước đó vào một thư mục khác, tôi có thể sử dụng nội dung được giải nén từ thư mục khác đó.


0

7-zip sẽ trích xuất một phần của tệp từ rar đa phần, và sau đó bạn có thể ghép chúng lại với nhau bằng dd. Ví dụ: nếu bạn có phần rar đầu tiên và cuối cùng:

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

Nếu phần bù bạn cần tìm không phải là số nguyên tố, thì hãy sử dụng kích thước khối lớn hơn một. ddchỉ có thể seekđể bội số của kích thước khối đầu ra. ddthực sự thực hiện readwritegọi hệ thống với kích thước khối đó, vì vậy bs=1thực sự rất tệ.

Một ibskích thước lớn (kích thước khối đầu vào) sẽ tiết kiệm một nửa thời gian của CPU, vì tính seektheo đơn vị obs(kích thước khối đầu ra). Hoặc có thể có một số công cụ khác có thể tìm kiếm một vị trí byte tùy ý và sau đó thực hiện I / O có kích thước bình thường. Hoặc nếu bạn đang viết kịch bản này, bạn có thể dd với bs=1tối đa 32k được căn chỉnh, sau đó có thểtail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.