badpos位置的8m数据块里有一个坏道,大约在3680k的位置。
理论上conv=noerror,sync时,第1个8m块的后半部分应该补0,第2个8m块部分不受影响。
因此#3和#4的MD5应该相同。
但是apple的dd就是输出不同,gnu dd没毛病。
仔细分析文件,发现是坏道后面的数据发生了偏移。
#1] baddev=...
#2] badpos=...
#3] dd if=$baddev bs=8m count=2 skip=$badpos 2>/dev/null conv=noerror,sync | tail -c $((8<<20)) | md5sum;
66a3ec3f45e1533d1b66e718389abe4a -
#4] dd if=$baddev bs=8m count=1 skip=$((badpos+1)) 2>/dev/null conv=noerror,sync | md5sum;
cbe3aebe8265c23d42db0f3fa24429be -
注:把bs一路减小到1m的时候,终于没出幺蛾子了。
--
修改:kirbyzhou FROM 111.193.209.*
FROM 111.193.209.*