Có thể thêm mã sửa lỗi (BCH, RS hoặc vv) vào một tệp không?


12

Theo tôi biết, tài liệu lưu trữ WinRAR có thể chứa ECC (mã sửa lỗi), vì vậy nếu kho lưu trữ bị hỏng nhẹ, thì nó có thể tự sửa.

Ví dụ, tôi có thể mã hóa đầu tiên archives.tarđến archives.tar.ecc, và sau đó tải nó lên máy chủ của tôi. Nếu tệp bị hỏng nhẹ sau khi khách hàng tải xuống, thì nó có thể được sửa tự động mà không cần tải lại tệp bằng cách giải mã archives.tar.ecc. Tôi nghĩ nó sẽ là một ý tưởng tuyệt vời nếu kết nối mạng không ổn định.

Tôi tự hỏi liệu có phần mềm (nguồn mở) nào chạy trên Linux có thể đáp ứng nhu cầu của tôi không.

Bất kỳ đề xuất?


ở một mức độ nào đó, điều này đã xảy ra - trường chksum tiêu đề của mỗi tệp là tổng của các byte cấu thành của tiêu đề đó - để bao gồm trường kích thước. Nhiều người tarđi xa hơn - GNU tarmã hóa các lỗ tệp thưa thớt trong siêu dữ liệu tiêu đề và khi trích xuất bởi bất kỳ paxtrình lưu trữ tương thích POSIX nào sẽ tạo các tệp chứa thông tin cần thiết để xây dựng lại tệp hoặc bằng GNU tarvào tệp thưa ban đầu. Nó sử dụng các biến tiêu đề được mã hóa chủ yếu có thể xác định theo quy định của POSIX cho paxtiện ích w / -o.
mikeerv

Câu trả lời:


6

Tôi gặp vấn đề tương tự và thấy rằng các giải pháp được cung cấp trong câu trả lời khác không được chấp nhận vì chương trình / tiêu chuẩn par2 liên quan đến việc tạo các tệp riêng biệt để thực hiện khôi phục và xác minh. Tôi, giống như người hỏi ban đầu tôi nghĩ, muốn một tệp duy nhất có mã sửa lỗi.

Tôi đã tìm thấy rsbep chương trình đã từng có trong trình quản lý gói và sau đó tìm thấy mã cần thiết ở đây: https://www.thanrame.space/rsbep.html

Điều này cho phép một người tạo một tệp có mã sửa lỗi Sậy-Solomon và sau đó truy xuất tệp gốc từ phiên bản ECC có thể bị hỏng.


rsbep là tuyệt vời! Nhưng nó hơi khác một chút: đó là toàn bộ hệ điều hành bị đóng băng, vì vậy bạn có thể thêm các tệp bên trong nhưng bạn không thể sửa đổi những gì bên trong và việc di chuyển xung quanh sẽ khó khăn hơn một chút. Nhưng đó là một cách tiếp cận thực sự thú vị, sử dụng FUSE và mã nguồn mở.
gabious

1
@gabious, điều đó không đúng. Có một triển khai FUSE fs sử dụng rsbeptrong suốt, nhưng đó chỉ là trên các tập lệnh hoạt động trên cơ sở từng tập tin.
nyov

6

Bạn quan tâm đến PAR2, sử dụng sửa lỗi Reed-Solomon. parchive là đặc tả định dạng tệp ECC, đối với Linux, bạn sẽ muốn PyPar hoặc par2tbb và trên Windows, bạn sử dụng GUI có tên QuickPar .


1
Các liên kết cho PyPar và par2tbb trông bị hỏng đối với tôi. Tôi tìm thấy par2tbb ở đây
Drist

2
Tôi nghĩ PyPar hoàn toàn không liên quan đến sửa lỗi.
mbarkhau

2

Nếu bạn muốn tách tệp ecc khỏi kho lưu trữ, bạn có thể sử dụng pyFileFixity, một dự án Python mã nguồn mở nhằm cung cấp một hệ thống bảo vệ giống như PAR thế hệ tiếp theo chống tham nhũng bit.

Nếu bạn muốn bảo vệ ecc được đưa trực tiếp vào kho lưu trữ, bạn có thể sử dụng DAR mã nguồn mở , một loại TAR thế hệ tiếp theo, cho phép tạo cả không rắn (nghĩa là cho phép trích xuất một phần các tài liệu lưu trữ bị hỏng) và ecc ( sử dụng PAR2) và cách ly danh mục (nghĩa là lưu bản sao lưu của dữ liệu meta của cây thư mục và hệ thống tệp) trong kho lưu trữ .dar.


0

Một dự án 2018 tương tự khác là Redupe dường như cung cấp cả sửa lỗi tệp nhúng và nhúng trong hai công cụ riêng biệt:

Công cụ đầu tiên, redupe, được mô hình hóa sau các công cụ nén như gzip hoặc bzip2, nhưng thêm phần dư thừa thay vì loại bỏ nó.

Ví dụ trong trang web (được thay đổi cho ngắn gọn) trông tương tự như trường hợp sử dụng của bạn:

$ redupe home-backup.tar.gz
$ ls -l
-rw------- 1 rescrv 5625162218 home-backup.tar.gz
-rw-r--r-- 1 rescrv 6433996800 home-backup.tar.gz.rd

reundupe sau đó có thể được sử dụng để khôi phục tập tin và có thể sửa các lỗi nhỏ.

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.