Проблема в том, что вы используете разные оболочки. Команда echo
- это оболочка, встроенная для большинства оболочек, и каждая реализация ведет себя по-своему. Вы сказали, что ваша оболочка по умолчанию - fish
. Итак, когда вы запустите эту команду:
~> echo -n "asdasd" | shasum -a 256 | cut -d " " -f 1 | xxd -r -p | base64
X9kkYl9qsWoZzJgHx8UGrhgTSQ5LpnX4Q9WhDguqzbg=
, вы получите результат, показанный выше. Это потому, что эхо
из рыбы
поддерживает -n
. Очевидно, в вашей системе / bin / sh
- это оболочка, у которой echo
не поддерживает -n
. Если echo
не понимает -n
, то на самом деле печатается -n asdasd \ n
. Чтобы проиллюстрировать это, давайте воспользуемся printf
, чтобы напечатать именно это:
$ printf -- "-n asdasd\n"
-n asdasd
Теперь, если мы пропустим это через ваш конвейер:
$ printf -- "-n asdasd\n" | shasum -a 256 | cut -d " " -f 1 | xxd -r -p | base64
IzoDcfWvzNTZi62OfVm7DBfYrU9WiSdNyZIQhb7vZ0w=
Это результат, который вы получите из вашего скрипта. Итак, что происходит, так это то, что echo -n "asdasd"
фактически печатает -n
и завершающую новую строку. Простое решение - использовать printf
вместо echo
:
$ printf "asdasd" | shasum -a 256 | cut -d " " -f 1 | xxd -r -p | base64
X9kkYl9qsWoZzJgHx8UGrhgTSQ5LpnX4Q9WhDguqzbg=
Вышеупомянутое будет работать одинаково в командной строке и в вашем скрипте и должно работать с любой оболочкой, которую вы хотите попробовать. . Еще одна причина, почему printf
лучше, чем echo
.
Первое, что нужно сделать, это заставить систему монтироваться как обычно, а не в деградированном режиме.
Следующим шагом будет использование btrfs device delete
для удаления рассматриваемого диска. Команда переместит все фрагменты с выбранного диска на другие диски в пуле в соответствии с вашим профилем BTRFS («Уровни RAID» ). Прежде чем вы сможете запустить команду для удаления устройства, ваши профили, как данные, так и метаданные, должны быть настроены таким образом, чтобы после удаления устройства в вашем пуле все еще были необходимые диски для удовлетворения требований профиля; временное изменение профилей при необходимости.
После того, как диск был удален из пула, вы можете добавить замену с помощьюbtrfs device add /dev/...
Наконец, вы можете использовать btrfs balance
для перемешивания данных об использовании нового диска.Вам, безусловно, понадобится эта команда, чтобы изменить профили обратно, если вам нужно изменить их временно.