เป็นไปได้หรือไม่ที่จะเพิ่มรหัสแก้ไขข้อผิดพลาด (BCH, RS หรืออื่น ๆ ) ลงในไฟล์เดียว?


12

เท่าที่ฉันรู้ไฟล์เก็บถาวร WinRAR อาจมี ECC (รหัสแก้ไขข้อผิดพลาด) ดังนั้นหากไฟล์เก็บถาวรได้รับความเสียหายเล็กน้อยก็สามารถแก้ไขได้ด้วยตัวเอง

ตัวอย่างเช่นผมสามารถเข้ารหัสแรกarchives.tarไปarchives.tar.eccแล้วอัปโหลดไปยังเซิร์ฟเวอร์ของฉัน archives.tar.eccถ้าไฟล์ที่ได้รับความเสียหายเล็กน้อยหลังจากการดาวน์โหลดโดยลูกค้าแล้วก็สามารถแก้ไขได้โดยอัตโนมัติโดยไม่ต้องดาวน์โหลดไฟล์อีกครั้งโดยการถอดรหัส ฉันคิดว่ามันจะเป็นความคิดที่ดีถ้าการเชื่อมต่อเครือข่ายไม่เสถียร

ฉันสงสัยว่ามีซอฟต์แวร์ (open-source) ที่ทำงานบน Linux ที่สามารถตอบสนองความต้องการของฉันได้หรือไม่

ข้อเสนอแนะใด ๆ


ในระดับหนึ่งสิ่งนี้เกิดขึ้นแล้ว - ฟิลด์ chksum ส่วนหัวของไฟล์แต่ละไฟล์คือผลรวมของไบต์ส่วนประกอบที่เป็นส่วนหัวของ - เพื่อรวมฟิลด์ขนาด อีกหลายคนtarไปไกลกว่านี้ - GNU tarเข้ารหัสช่องโหว่ของไฟล์เบาบางในข้อมูลเมตาของส่วนหัวและเมื่อทำการแยกโดยโปรแกรมpaxเก็บถาวรที่รองรับPOSIX จะสร้างไฟล์ที่มีข้อมูลที่จำเป็นในการสร้างไฟล์ใหม่หรือ GNU tarไปยังไฟล์ sparse ดั้งเดิม มันใช้การเข้ารหัสเป็นหลักตัวแปรที่กำหนดส่วนหัวเป็นที่ระบุโดย POSIX สำหรับpaxยูทิลิตี้ w -o/
mikeserv

คำตอบ:


6

ฉันมีปัญหาเดียวกันนี้และพบว่าโซลูชันที่ให้ไว้ในคำตอบอื่น ๆ นั้นไม่สามารถยอมรับได้เนื่องจากโปรแกรม / มาตรฐาน par2 เกี่ยวข้องกับการสร้างไฟล์แยกต่างหากเพื่อทำการกู้คืนและการตรวจสอบ ฉันชอบผู้ถามเดิมที่ฉันคิดว่าต้องการไฟล์เดียวที่มีรหัสแก้ไขข้อผิดพลาด

ฉันพบโปรแกรม rsbep ซึ่งเคยเป็นผู้จัดการแพ็คเกจแล้วพบรหัสที่จำเป็นที่นี่: https://www.thanassis.space/rsbep.html

สิ่งนี้ทำให้หนึ่งสามารถสร้างไฟล์ที่มีรหัสแก้ไขข้อผิดพลาด Reed-Solomon แล้วดึงไฟล์ต้นฉบับจากเวอร์ชัน ECC ที่เสียหายได้


rsbep ดีมาก! แต่มันก็แตกต่างกันเล็กน้อย: มันเป็นระบบปฏิบัติการที่ถูกแช่แข็งทั้งหมดดังนั้นคุณสามารถเพิ่มไฟล์เข้าไปข้างในได้ แต่คุณไม่สามารถแก้ไขสิ่งที่อยู่ข้างในได้ แต่มันเป็นวิธีที่น่าสนใจมาก ๆ โดยใช้ FUSE และ opensource
gaborous

1
@gaborous นั่นไม่ใช่ความจริง มีการนำ FUSE fs มาใช้rsbepอย่างโปร่งใส แต่นั่นก็เป็นเพียงสคริปต์ที่ทำงานบนพื้นฐานแบบไฟล์ต่อไฟล์
nyov

6

คุณสนใจใน PAR2 ซึ่งใช้การแก้ไขข้อผิดพลาด Reed-Solomon parchiveเป็นข้อกำหนดรูปแบบไฟล์ ECC สำหรับลินุกซ์คุณจะต้องการPyParหรือpar2tbbและใน Windows คุณใช้ GUI ที่เรียกว่าQuickPar


1
ลิงก์สำหรับ PyPar และ par2tbb ดูพังให้ฉัน ฉันพบ par2tbb ที่นี่
Drist

2
ฉันคิดว่า PyPar ไม่เกี่ยวข้องกับการแก้ไขข้อผิดพลาดอย่างสมบูรณ์
mbarkhau

2

หากคุณต้องการแยกไฟล์ ecc ออกจากไฟล์เก็บถาวรคุณสามารถใช้pyFileFixity ซึ่งเป็นโครงการ Python opensourceที่มีจุดประสงค์เพื่อให้ระบบการป้องกันแบบ PAR คล้ายกับรุ่นถัดไปเพื่อป้องกันความเสียหายของบิต

หากคุณต้องการให้การป้องกัน ecc รวมอยู่ในไฟล์เก็บถาวรโดยตรงคุณสามารถใช้ opensource DARซึ่งเป็น TAR ยุคถัดไปซึ่งอนุญาตให้สร้างทั้งไฟล์ไม่มั่นคง (เช่นอนุญาตให้แยกไฟล์เก็บถาวรที่เสียหายบางส่วน) และ ecc ( ใช้ PAR2) และการแยกแคตตาล็อก (เช่นบันทึกการสำรองข้อมูลของทรีไดเรกทอรีและระบบแฟ้ม meta-data) โดยตรงในคลัง. dar


0

โครงการ 2018 ที่คล้ายกันอีกโครงการหนึ่งคือRedupeซึ่งดูเหมือนว่าจะให้การแก้ไขข้อผิดพลาดไฟล์ทั้งแบบแยกและไฟล์ฝังตัวในเครื่องมือสองชิ้นแยกกัน:

เครื่องมือแรกคือ redupe ถูกสร้างแบบจำลองหลังจากเครื่องมือบีบอัดเช่น gzip หรือ bzip2 แต่เพิ่มความซ้ำซ้อนแทนที่จะกำจัดมัน

ตัวอย่างในหน้าเว็บ (เปลี่ยนให้สั้นลง) ดูเหมือนกับกรณีการใช้งานของคุณ:

$ 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 จากนั้นสามารถใช้เพื่อกู้คืนไฟล์และอาจแก้ไขข้อผิดพลาดเล็ก ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.