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


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.