오류 수정 코드 (BCH, RS 등)를 단일 파일에 추가 할 수 있습니까?


12

내가 아는 한 WinRAR 아카이브에는 ECC (오류 수정 코드)가 포함되어있을 수 있으므로 아카이브가 약간 손상된 경우 자체적으로 수정할 수 있습니다.

예를 들어, 내가 먼저 인코딩 할 수 있습니다 archives.tar에를 archives.tar.ecc한 다음 내 서버에 업로드합니다. 클라이언트가 파일을 다운로드 한 후 파일이 약간 손상된 경우 파일을 다시 다운로드하지 않고 파일을 자동으로 수정하여 디코딩 할 수 있습니다 archives.tar.ecc. 네트워크 연결이 불안정하면 좋은 아이디어라고 생각합니다.

Linux에서 내 요구를 충족시킬 수있는 (오픈 소스) 소프트웨어가 있는지 궁금합니다.

어떤 제안?


각 파일의 헤더 chksum 필드는 해당 헤더의 구성 바이트의 합인 크기 필드를 포함하기 위해 어느 정도까지 이미 발생했습니다. 대부분 tar의 더 이동 - GNU는 tar모든 POSIX에 의해 헤더 메타 데이터 추출시 스파 스 파일 구멍을 인코딩 pax파일을 다시 작성하는 데 필요한 정보가 포함 된 파일을 생성하거나, GNU에 호환 아카이버 tar원래 스파 스 파일. 유틸리티 w /에 대해 POSIX에서 지정한pax 대로 기본적으로 인코딩 된 헤더 변수를 사용합니다 -o.
mikeserv

답변:


6

나는 똑같은 문제가 있었고 par2 프로그램 / 표준이 복구 및 확인을 위해 별도의 파일을 생성하기 때문에 다른 답변에서 제공된 솔루션이 허용되지 않는다는 것을 알았습니다. 필자는 원래의 생각과 마찬가지로 오류 수정 코드가있는 단일 파일을 원합니다.

패키지 관리자에 있던 rsbep 프로그램을 찾은 다음 여기에서 필요한 코드를 찾았습니다. https://www.thanassis.space/rsbep.html

이를 통해 Reed-Solomon 오류 수정 코드가 포함 된 파일을 만든 다음 손상된 ECC 버전에서 원본 파일을 검색 할 수 있습니다.


rsbep는 위대하다! 그러나 그것은 조금 다릅니다 : 그것은 완전히 고정 된 OS이므로 내부에 파일을 추가 할 수는 있지만 내부의 내용을 수정할 수는 없으며 이동하기가 조금 더 번거 롭습니다. 그러나 FUSE와 오픈 소스를 사용하는 것은 매우 흥미로운 접근법입니다.
gaborous

1
@gaborous, 그건 사실이 아니다. rsbep투명하게 사용하는 FUSE fs 구현이 있지만 파일 단위로 작동하는 스크립트 위에 만 있습니다.
nyov

6

리드 솔로몬 오류 수정을 사용하는 PAR2에 관심이 있습니다. parchive 는 ECC 파일 형식 사양이며 Linux의 경우 PyPar 또는 par2tbb 가 필요 하며 Windows에서는 QuickPar 라는 GUI를 사용합니다 .


1
PyPar와 par2tbb에 대한 링크가 깨졌습니다. 여기
Drist

2
PyPar는 오류 수정과 완전히 관련이 없다고 생각합니다.
mbarkhau

2

ecc 파일을 아카이브와 분리하려면 비트 손상에 대비 한 차세대 PAR 유사 보호 시스템을 제공 하는 오픈 소스 Python 프로젝트 인 pyFileFixity 를 사용할 수 있습니다 .

ecc 보호를 아카이브에 직접 포함 시키려면 차세대 TAR의 일종 인 오픈 소스 DAR을 사용하면 비 고체 (즉 손상된 아카이브의 부분 추출 허용)와 ecc ( PAR2를 사용) 및 카탈로그 격리 (즉, 디렉토리 트리 및 파일 시스템 메타 데이터의 백업 저장)를 .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.