hdd-fixBlocks/fixBlocks.sh
2020-03-18 21:01:26 +03:00

61 lines
1.1 KiB
Bash

#!/bin/bash
#info @ EOF
block=$(smartctl --all /dev/sda | grep 'Short offline' | grep '# 1' | awk '{print $10}')
echo "Fixing: " $block
calcForm="(($block-2048)*512)/4096"
ddblock=$(echo $calcForm | bc)
#echo '(($block-2048)*512)/4096'
echo "for dd: " $ddblock
dd if=/dev/random of=/dev/sda1 bs=4096 count=1 seek=$block
echo ""
let ddblock+=1
echo "for dd: " $ddblock
dd if=/dev/random of=/dev/sda1 bs=4096 count=1 seek=$block
echo ""
let ddblock-=2
echo "for dd: " $ddblock
dd if=/dev/random of=/dev/sda1 bs=4096 count=1 seek=$block
echo ""
smartctl -t short /dev/sda -q errorsonly
sleep 10
echo "New badblock: "
smartctl --all /dev/sda | grep 'Short offline' | grep '# 1' | awk '{print $10}'
exit 0
#######
SRC: https://linoxide.com/linux-how-to/how-to-fix-repair-bad-blocks-in-linux/
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
L=99846
(standard_in) 1: syntax error
l=99846
s=2048
b=4096
(l-s)*512
50072576
50072576/b
12224
l=109614
((l-s)*512)/b
13445
l=128153
((l-s)*512)/b
15763
l=484030
((l-s)*512)/b
60247