![清理文件系统以检查所有使用的扇区是否可读](https://linux22.com/image/160625/%E6%B8%85%E7%90%86%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BB%A5%E6%A3%80%E6%9F%A5%E6%89%80%E6%9C%89%E4%BD%BF%E7%94%A8%E7%9A%84%E6%89%87%E5%8C%BA%E6%98%AF%E5%90%A6%E5%8F%AF%E8%AF%BB.png)
我希望有一种方法可以定期检查我是否确实可以读取驱动器上的所有数据,以便我可以重写任何文件和/或进一步调查是否存在问题。
ZFS 和 Btrfs 都有一个用于此目的的清理命令。
如何有效地清理 ext* 和 NTFS?
答案1
一种方法是简单地读取每个文件,如果出现问题,则期望在 STDERR 上收到一条消息:
(cd /mountpoint && find . -type d -o -type f -printf '%P\0' | xargs -0 b2sum -z) 2>errors | tee hashes
(cd /mountpoint && find .-xdev -print0 | xargs -0P4 xxhsum ) >哈希 2>错误
使用-z
with b2sum
(或sha256sum
) 允许文件名带有换行符。
这有目的地包括允许空目录的目录。
如果空目录不是问题,这会更短:
(cd /mountpoint && sha256deep -0clrz -j0 -of . ) 2> errors | tee hashes
这将打印文件大小、哈希值和文件名,后跟NUL
.
理想情况下,我会添加-t
但sha256deep
目前有这个问题。