파일이 손상되었는지 확인하는 일반적인 해결책이 있습니까? 예를 들어 비디오 파일이 나쁘거나 압축 파일이 손상되었는지 등입니다.
echo "P = NP" >is-this-corrupt.txt:)
파일이 손상되었는지 확인하는 일반적인 해결책이 있습니까? 예를 들어 비디오 파일이 나쁘거나 압축 파일이 손상되었는지 등입니다.
echo "P = NP" >is-this-corrupt.txt:)
답변:
아니요, 일반적인 해결책은 없습니다. 파일이 손상되었는지 확인하는 유일한 방법은 시도하고 읽는 것입니다. 특정 형식을 읽는 방법을 알고있는 소프트웨어 만 가능합니다.
할 수있는 일은 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
그러나 사례 진술을 작성하기 위해해야 할 일이 많습니다.
누군가가 이미 그러한 스크립트 (또는 프로그램)를 작성했을 가능성이 있지만 나는 모른다.
grep, cat, tar...). 따라서 귀하의 솔루션은 매우 부풀어 있습니다.
cat손상을 검사하기 위해 파일 또는 구조화되지 않은 바이트 스트림으로 파일을 처리하는 다른 프로그램을 사용할 수 없습니다 . 내 솔루션이 부풀어 있다고 생각하지 않습니다.
ZFS를 사용하는 경우 파일을 읽을 수 있으며 파일이 손상되지 않았거나 읽기 오류가 발생하여 파일을 읽을 수 있습니다.
편집 현명한 의견 후, 여기 내 대답에 대한 설명이 있습니다.
ZFS는 자동 데이터 손상을 방지하고 감지 할 수 있습니다. 예 : http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 물론 파일이 처음 작성된 시점에 파일이 이미 손상된 경우에는 아무 것도 없습니다 파일 시스템이 할 수 있습니다.
파일 전송 중 발생할 수있는 손상을 방지하기 위해 일반적인 범용 기술은 md5sum 또는 유사한 해시입니다.