Таким образом, у меня есть старый HDD, который был badsectors и мной неправильно следующий сценарий для записи нулей в badsectors, который находит smartctl. Вопросом является желание эта справка ошибки чтения-записи, или это бесполезно?
сценарий (btw извините любых глазных выдалбливаний сначала записанный сценарий):
a="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $9}')"
smartctl -t short /dev/sdb
clear
echo $a
b="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $5}')"
echo $b
until [[ $a = 0 ]];do
if [[ $b == *Compl* && $a == 0% ]]
then
exit
else
if [[ $b == *Compl* ]]
then
echo writting zeros
X="$(smartctl -l selftest /dev/sdb | grep 'read failure'| grep '# 1' | awk '{print $10}')"
Y=$((X / 8))
Z=${Y%.*}
echo $Y
dd if=/dev/zero of=/dev/sdb conv=sync bs=4096 count=1 seek=$Y
smartctl -t short /dev/sdb
fi
sleep 10
c="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $9}')"
d="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $5}')"
until [[ $c != $a ]] || [[ $d != $b ]];do
sleep 10
c="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $9}')"
d="$(smartctl -l selftest /dev/sdb | grep '# 1' | awk '{print $5}')"
clear
echo $c
echo $d
echo ZZZZzzzzzZZZZ
done
clear
echo wake up time $(date +"%H:%M:%S")
a=$c
b=$d
echo $a
echo $b
fi
done
echo done
Это в основном бесполезно. Могло бы помочь в течение короткого времени, но если Ваш диск имеет поврежденные секторы, то это только собирается получить больше поврежденных секторов со временем. Лучше покупать новый диск и/или получать тот, замененный, если он находится под гарантией. Если это не находится под гарантией, затем обратно хорошие данные к хорошему диску, запишите 0s в дефектный диск по крайней мере 10 раз и возьмите его к месту, где это будет переработано правильно.