Была та же проблема: диск, который вот-вот умрет,
с разделом NTFS, который я хотел сначала спасти и исправить после
(до диск полностью ушел).
Удалось решить эту проблему с помощью ntfsclone :
/ dev / sdaX
, / dev / sdbX
) ntfsclone --force --ignore-fs-check --rescue --overwrite NEW-part OLD-part
NEW-part
и OLD-part
с именами из шага '4.' - / dev / sd ...
) - когда закончите -
РЕДАКТИРОВАТЬ:
- ПРИМЕЧАНИЕ -
Неисправный (нестабильный) блок питания может привести к сбою контроллеров дисков,
, и вероятность их выхода из строя гораздо выше, чем у дисков, поэтому лучше проверить и это.
Вы можете столкнуться с поведением, что все работает нормально в течение нескольких минут
(или секунд), а затем система начинает сходить с ума, как только она нагревается, буквально .
(установка блока питания, конечно, не восстановит потерянные данные, но предотвратит их потерю)
Even if I leave it blank, it still somehow counts one character [.. .] Could somebody please help me identify this problem?
Попробуйте printf
вместоecho
$ echo "" | wc -m
1
$ printf "" | wc -m
0
При использовании echo
, wc
будет учитываться символ новой строки.
Или, что лучше, использовать чистый Bash без конвейера вwc
:
$ string=foobar
$ echo "${#string}"
6
Я бы также предпочел метод "расширения параметров" оболочки; но если вы используете wc
, вы также можете использовать его опцию подсчета слов:
read LENGTH WORDS REST <<<$(echo -n ${USERNAME} | wc -cw)
echo $LENGTH $WORDS
2 8
Вы можете убедиться, что используются только символы ASCII. -Никаких многобайтовых международных символов.
Если вы пойдете по пути bash
internals, проверка пробелов может быть
[ "$USERNAME" = "${USERNAME%% *}" ] && echo No spaces || echo some spaces