Bash 在fsarchiver备份后查找填充为零的文件
我的SSD快死掉了,所以我尝试用备份我的/home,但在备份过程中我遇到了一系列错误,如:Bash 在fsarchiver备份后查找填充为零的文件,bash,filesystems,Bash,Filesystems,我的SSD快死掉了,所以我尝试用备份我的/home,但在备份过程中我遇到了一系列错误,如:文件被截断:用零填充。 现在我正试图找到这些文件,所以我正在搜索bash/python/perl。。。脚本允许我搜索最后n个字节“填充为零”的非空文件 提前感谢您的帮助,请原谅我的英语。此脚本获取命令行上的文件列表,并报告最后十个字节用零填充的文件的名称: #!/bin/sh for fname in "$@" do if [ -s "$fname" -a "$(tail -c10 "$fname"
文件被截断:用零填充。
现在我正试图找到这些文件,所以我正在搜索bash/python/perl。。。脚本允许我搜索最后n个字节“填充为零”的非空文件
提前感谢您的帮助,请原谅我的英语。此脚本获取命令行上的文件列表,并报告最后十个字节用零填充的文件的名称:
#!/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 {} +
如果您有一个被截断的文件,请使用
od-c filename
,单击上面的edit
链接后,使用{}
工具将输出的最后几行粘贴到此处。现在,我们无法确定用零填充是指零值字节,还是ascii“0”字符。祝你好运