파일이 손상되었는지 확인하는 방법은 무엇입니까?

파일이 손상되었는지 확인하는 방법은 무엇입니까?

파일이 손상되었는지 확인하는 일반적인 해결책이 있습니까? 예를 들어 동영상 파일이 손상되었는지, 압축 파일이 손상되었는지 등이 있습니다.

답변1

특정 시점에 파일이 양호하다는 것을 알고 있는 경우 해당 파일을 체크섬하고 나중에 비교하여 여전히 손상되지 않았는지 확인할 수 있습니다. 이는 미디어 간이나 네트워크를 통해 파일을 전송하기 전에 유용합니다.

파일의 상태가 양호하지 않은 경우 손상 여부를 확인할 수 있는 보편적인 방법은 없습니다. 각 경우의 특정 파일 형식만 어떤 데이터가 손상되었는지 여부를 결정할 수 있습니다.

답변2

아니요, 보편적인 해결책은 없습니다. 파일이 손상되었는지 확인하는 유일한 방법은 파일을 읽어보는 것입니다. 특정 형식을 읽는 방법을 아는 소프트웨어만이 이를 수행할 수 있습니다.

당신이 할 수 있는 일은 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

하지만 사례 진술서를 작성하려면 많은 작업을 수행해야 합니다.

누군가가 그러한 스크립트(또는 프로그램)를 작성했을 가능성이 있지만 나는 그것에 대해 모릅니다.

답변3

ZFS를 사용하는 경우 파일을 읽을 수 있고 파일이 손상되지 않음이 보장되거나 읽기 오류가 발생하여 손상됩니다.

편집 합리적인 의견을 낸 후 내 대답에 대한 설명은 다음과 같습니다.

ZFS는 자동 데이터 손상을 보호하고 감지할 수 있습니다. 예를 들어:http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 물론, 파일이 처음 작성되었을 때 손상된 경우 파일 시스템이 할 수 있는 일은 별로 없습니다.

파일 전송 중 손상을 방지하기 위해 일반적으로 사용되는 기술은 md5sum 또는 유사한 해싱입니다.

답변4

내 생각에 여기에 대한 대답은 대부분 다음과 같습니다."해변을 덮다", 그러나 OP는 다음과 같이 물었습니다.

"예를 들어 동영상 파일이 손상되었거나압축파일이 손상되었습니다, 등. "

unzip유틸리티에는 -t다음을 수행할 수 있는 옵션이 있습니다.

테스트 아카이브 파일. 이 옵션은 메모리에 지정된 각 파일을 추출하고 확장 파일의 CRC(Cyclic Redundancy Check, Enhanced Checksum)를 원본 파일에 저장된 CRC 값과 비교합니다.

파일이 "양호"로 테스트되면 unzip -t /path/to/file편리하게 0( 0또는 )을 반환하고, true문제가 발견되면 0이 아닌 숫자를 반환합니다.

관련 정보