파일이 손상되었는지 확인하는 방법?


13

파일이 손상되었는지 확인하는 일반적인 해결책이 있습니까? 예를 들어 비디오 파일이 나쁘거나 압축 파일이 손상되었는지 등입니다.


1
디스크에 물리적 오류가 있는지 또는 파일의 정보가 올바르지 않은지 묻습니까?
Thorbjørn Ravn Andersen

2
임의 파일의 정보가 올바른지 확인하는 것은 꽤 까다 롭습니다. echo "P = NP" >is-this-corrupt.txt:)
Tom Anderson

답변:


10

아니요, 일반적인 해결책은 없습니다. 파일이 손상되었는지 확인하는 유일한 방법은 시도하고 읽는 것입니다. 특정 형식을 읽는 방법을 알고있는 소프트웨어 만 가능합니다.

할 수있는 일은 file파일 형식을 식별 한 다음 형식을 사용하여 파일을 확인할 적절한 프로그램을 선택하는 것입니다. 다음과 같은 스크립트를 작성할 수 있습니다.

# /bin/bash -eu

FILENAME=$1

FILETYPE="$(file -b $FILENAME | head -1 | cut -d , -f 1)"
case "$FILETYPE" in
    "gzip compressed data") CHECKER="gunzip -t" ;;
    # many, many more lines here
    *) echo "Unknown type: $FILETYPE"; exit 1 ;;
esac

$CHECKER $FILENAME

그러나 사례 진술을 작성하기 위해해야 ​​할 일이 많습니다.

누군가가 이미 그러한 스크립트 (또는 프로그램)를 작성했을 가능성이 있지만 나는 모른다.


1
"특정 형식을 읽는 방법을 알고있는 소프트웨어 만이이를 수행 할 수 있습니다" 는 잘못된 가정입니다. 제공하는 파일 형식에 신경 쓰지 않는 많은 프로그램이 있습니다. (예를 들어, 생각 grep, cat, tar...). 따라서 귀하의 솔루션은 매우 부풀어 있습니다.
rozcietrzewiacz

4
"읽다"라는 말은 "해석"을 의미했습니다. 더 명확해야했습니다. cat손상을 검사하기 위해 파일 또는 구조화되지 않은 바이트 스트림으로 파일을 처리하는 다른 프로그램을 사용할 수 없습니다 . 내 솔루션이 부풀어 있다고 생각하지 않습니다.
Tom Anderson

Caleb에서 제안한 것처럼 각 파일을 이진 데이터로 처리하고 나중에 확인할 수 있도록 체크섬을 저장할 수 있습니다. 이것은 보편적이고 단순하며 비교적 빠릅니다.
rozcietrzewiacz

1
그러나 귀하의 접근 방식은 이전에 보거나 액세스하지 않은 파일에서도 검증을 수행 할 수있는 이점이 있음을 알았습니다. 이것은 확실히 플러스입니다-귀하의 답변에 지적 할 수 있습니다.
rozcietrzewiacz

14

특정 시점에서 파일이 양호하다는 것을 알고 있으면 체크섬을 만들어 나중에 비교하여 여전히 전체인지 확인할 수 있습니다. 이것은 매체간에 또는 네트워크를 통해 파일을 전송하기 전에 유용합니다.

파일의 상태에 대해 잘 모르는 경우 보편적 인 방법이나 손상을 검사 할 방법이 없습니다. 각 경우에 특정 파일 형식만으로 데이터의 손상 여부를 결정합니다.


3

ZFS를 사용하는 경우 파일을 읽을 수 있으며 파일이 손상되지 않았거나 읽기 오류가 발생하여 파일을 읽을 수 있습니다.

편집 현명한 의견 후, 여기 내 대답에 대한 설명이 있습니다.

ZFS는 자동 데이터 손상을 방지하고 감지 할 수 있습니다. 예 : http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 물론 파일이 처음 작성된 시점에 파일이 이미 손상된 경우에는 아무 것도 없습니다 파일 시스템이 할 수 있습니다.

파일 전송 중 발생할 수있는 손상을 방지하기 위해 일반적인 범용 기술은 md5sum 또는 유사한 해시입니다.


와우, 어떤 기능 : O
LanceBaynes

1
웹에서 손상된 비디오를 다운로드하면? ZFS는 도움이되지 않습니다. 손상된 파일이 변경되지 않았는지 확인합니다. ZFS는 훌륭하지만 손상된 파일을 확인하는 솔루션은 아닙니다.
Tom Anderson

불행히도 이것은 파일 시스템 무결성 검사일 뿐이며 파일에 대한 실제 이해와 파일 손상 여부가 아닙니다. @Lance가 의심되는 가장 일반적인 사용법은 다운로드 또는 전송 된 수신 파일이 유효한지 여부를 결정할 수 있습니다. ZFS는 파일이 좋은지 아닌지를 마법으로 결정할 수 없으며, 파일을 제공하는 것이 로컬로 한 조각으로 저장되고 반환 될 것이라고 약속 할뿐입니다.
Caleb

질문에 / data-recovery 및 / filesystems 태그가 지정되었으므로 처음에 이미 손상된 파일이 아니라 자동 데이터 손상에 관한 것으로 가정했습니다. 그 요점을 명확히하기 위해 편집 된 답변.
jlliagre 2016 년

@jiliagre : 귀하의 답변 후 약 1 시간 후에이 질문에 해당 태그로 태그를 다시 지정했습니다 (아마도). 당신이 대답했을 때 그것은 단순히 "linux"로 태그되었습니다.
Caleb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.