파일이 손상되었는지 확인하는 일반적인 해결책이 있습니까? 예를 들어 비디오 파일이 나쁘거나 압축 파일이 손상되었는지 등입니다.
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 또는 유사한 해시입니다.