Как смонтировать dd-клон диска btrfs?

Вы хотите удалить подстроки buildи .zipиз строки build102p12.zip.

Предполагая, что у вас есть исходная строка в переменной оболочкиname:

name='build102p12.zip'

name="${name#build}"  # remove prefix "build"
name="${name%.zip}"   # remove suffix ".zip"

$nameтеперь будет строкой 102p12.

Дополнительную информацию о подстановке переменных ${parameter#word}и ${parameter%word}см. в руководстве по вашей оболочке.


Если у вас есть линия (и больше ничего)

build name : build102p12.zip

в файлеbuildinfo:

$ buildversion="$( grep -oE '[0-9]+p[0-9]+' buildinfo )"

Расширенное регулярное выражение [0-9]+p[0-9]+будет соответствовать всему, что выглядит как NNNpNNN, где каждое NNN— это некоторая последовательность цифр. Это предполагает, что это происходит только один раз в файле buildinfo.

2
21.11.2019, 01:42
1 ответ

btrfs — это файловая система ), поддерживающая несколько -устройств, (, поэтому ей нужен какой-то способ отслеживать, какие устройства являются частью данной файловой системы. На самом деле, если у вас несколько устройств, вы даете смонтировать только одно, а остальные btrfs находит сама.

Это делается с помощью UUID файловой системы, который, конечно же, теперь такой же, как и в вашей копии. btrfs сохраняет этот UUID много раз; btrfstune -u /dev/sdcследует изменить их все (, но это может занять некоторое время,так как приходится переписывать кучу метаданных ). На относительно новых ядрах(патч от декабря 2018 ), btrfstune -m /dev/sdcтакже должен работать без перезаписи всех метаданных. Обратите внимание, что некоторые люди сообщали о повреждении этих параметров, но вы уже работаете над копией.

Важное предупреждение!

Пожалуйста, прочтите ошибки btrfs , в частности предупреждение о блоке -копий уровней . Наличие двух копий одного из блочных устройств файловой системы побуждает ядро ​​использовать неправильный (, потому что они имеют один и тот же UUID файловой системы, поэтому, насколько он может судить, это одно и то же устройство ), что — если бывает — скорее всего уничтожитобоих их. Включая ваш оригинал.(Подумайте, что произойдет, если у вас есть файловая система из двух -устройств с устройствами A1 и B1. Вы делаете копию A1 как A2. Теперь, когда ядро ​​монтирует файловую систему, оно может использовать A1 и B1, как и ожидалось. Или он может использовать A2 и B1. И это может включаться при каждом монтировании, а это означает, что половина файловой системы может «потерять» все записи с момента последнего монтирования ).

К счастью, ядро ​​заметило вашу попытку смонтировать клон и остановило вас.

Что делать вместо этого

Любой из:

  • Скопируйте изображение в файл (и не устанавливайте на него петлевое устройство ). Работайте с копией на другом компьютере (с петлевым устройством )или на виртуальной машине. Не позволяйте одному ядру видеть обе копии, пока не убедитесь, что UUID файловой системы изменился.
  • Используйте tar, btrfs-sendи т. д., чтобы создать копию в новой файловой системе с другим UUID файловой системы.
3
27.01.2020, 22:02

Теги

Похожие вопросы