我的SSD已经死了,所以我尝试使用fsarchiver备份我的/ home,但在此过程中我遇到了一堆错误:file has been truncated: padding with zeros.
现在我正在尝试找到这些文件,所以我正在寻找一个bash / python / perl ...脚本,允许我搜索非空文件,最后n个字节'用零填充'。
提前感谢您的帮助,请原谅我的英语。
答案 0 :(得分:0)
此脚本获取命令行上的文件列表,并报告最后十个字节用零填充的名称:
#!/bin/sh
for fname in "$@"
do
if [ -s "$fname" -a "$(tail -c10 "$fname" | tr -d '\000' | wc -c)" -eq 0 ]
then
echo Truncated file: $fname
fi
done
首先检查文件是非空的([ -s "$fname" ]
)然后它占用文件的最后十个字节(tail -c10 "$fname"
)并删除任何字节(tr -d '\000'
)然后计算剩余的字节数(wc -c
)。如果所有最后十个字节都是零,则不会剩下任何字节,并且该文件被报告为截断。
如果您想在测试中使用10个字节以外的其他内容,请调整tail
选项以适应。
如果您测试某个目录或文件系统中的所有文件,find
可以提供帮助。如果上面的脚本在可执行文件名padded.sh中,则运行:
find path/to/suspect/files -size +10c -exec padded.sh {} +