如何检查文件是否损坏?

Lan*_*nes 18 filesystems checksum corruption

是否有任何通用的解决方案来检查文件是否损坏?例如,视频文件是否损坏,或压缩文件是否损坏等。

Cal*_*leb 15

如果您在某个时间点知道该文件是好的,则可以对其进行校验和,并在以后使用它进行比较以确保它仍然是完整的。这在介质之间或跨网络传输文件之前很有用。

如果您不知道文件的良好状态,则没有通用的方法或检查损坏情况。只有在每种情况下的特定文件格式才能确定哪些数据已损坏或未损坏。


Tom*_*son 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
Run Code Online (Sandbox Code Playgroud)

但是你有很多工作要做来填写案例陈述。

可能有人已经写过这样的脚本(或程序),但我不知道。

  • 通过“阅读”,我的意思是“解释”——我应该更清楚。您不能使用 `cat` 或任何其他将文件纯粹视为非结构化字节流的程序来检查损坏情况。我不相信我的解决方案是臃肿的。 (4认同)