hdd-fixBlocks/fixBlocks.sh

56 lines
1.3 KiB
Bash
Raw Normal View History

2020-02-23 21:45:10 +03:00
#!/bin/bash
2020-03-18 21:01:26 +03:00
#info @ EOF
2021-01-24 09:31:08 +03:00
#Скриптец проходится по ошибкам на диске и затирает их ddшкой.
#ACHTUNG! данные на диске могут быть утеряны!
2021-02-22 12:42:17 +03:00
#Написано для диска sdba с одним разделом sdb1 на весь диск
2021-01-24 09:31:08 +03:00
2023-11-11 23:18:15 +03:00
DISK="/dev/sda"
2020-03-18 21:01:26 +03:00
2023-11-11 23:18:15 +03:00
block=$(sudo smartctl --all $DISK | grep 'Short offline' | head -1 | awk '{print $10}')
2020-02-23 21:45:10 +03:00
echo "Fixing: " $block
2023-11-11 23:18:15 +03:00
sudo hdparm --read-sector $block $DISK
sudo hdparm --repair-sector $block --yes-i-know-what-i-am-doing $DISK
sudo hdparm --read-sector $block $DISK
2020-02-23 21:45:10 +03:00
2023-11-11 23:18:15 +03:00
sudo smartctl -t short $DISK -q errorsonly
2020-02-23 21:45:10 +03:00
2023-11-11 23:18:15 +03:00
while `sudo smartctl -a $DISK | grep -q 'Self_test_in_progress'`
do
sleep 1
done
2020-02-23 21:45:10 +03:00
2023-11-11 23:18:15 +03:00
sleep 20
2020-02-23 21:45:10 +03:00
echo "New badblock: "
2023-11-11 23:18:15 +03:00
sudo smartctl --all $DISK | grep 'Short offline' | grep '# 1' | awk '{print $10}'
2020-02-23 21:45:10 +03:00
exit 0
#######
2020-03-18 21:01:26 +03:00
SRC: https://linoxide.com/linux-how-to/how-to-fix-repair-bad-blocks-in-linux/
2020-02-23 21:45:10 +03:00
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