Как использовать parted в скрипте и получить пустой PARTLABEL
Я пытаюсь создать программное обеспечение для восстановления резервных копий, которые я уже создал с помощью сценариев. К счастью, мне не нужно было ничего восстанавливать, но теперь я хочу переместить содержимое одной из моих резервных копий на SSD-диск, и оказалось, что это сложнее, чем я ожидал.
Прямо сейчас я пытаюсь воссоздать таблицу разделов. Я хотел бы использовать parted, потому что он кажется самым простым из доступных инструментов для использования в скрипте. Я вижу две вещи, которые меня озадачивают.
Во-первых, команда наподобие parted /dev/sdh mklabel gpt mkpart primary fat32 2048 4096 print создает таблицу разделов gpt и раздел, но показывает имя "primary", и именно это blkid называет "PARTLABEL". Чтение информации и справочных страниц, похоже, указывает на то, что это должен быть тип файловой системы, а не имя. В ходе экспериментов выясняется, что тип fs больше не принимается, и вместо этого это имя.
Вторая проблема: я не хочу, чтобы имя раздела вообще, но я пробовал "" и "" безуспешно.
Итак: как мне создать раздел без PARTLABEL? Я, конечно, могу сделать это в gparted, но я не могу написать это.
2 ответа
Не берите в голову. Я нашел путь, и мальчик это странно. Если я хочу, чтобы parted принял пустую строку (по крайней мере, для этой цели), я должен указать ее три раза. Это верно, три.
Это выглядит так: parted -s $destination mkpart "'\ '" ntfs 1874585600s 1876559871s
Так что это обратный слеш внутри одинарных кавычек внутри двойных кавычек. Это работает, и я не смог найти ничего проще. Например, если я просто оставлю это, parted по-прежнему принимает команду, но использует 'ntfs' как тип файловой системы и имя раздела.
Grrrrr.
Я пробовал различные методы, чтобы получить фактическое пустое имя (также это ), но ни один метод не работал для неинтерактивного сценария. Однако использование канала для автоматического ввода команд сработало:
printf "\nfat32\n1048576B\n537919487B\n" | parted /dev/sda mkpart
Output:
Partition name? []?
File system type? [ext2]? fat32
Start? 1048576B
End? 537919487B
Information: You may need to update /etc/fstab.
По какой-то причине Файловая система была пустой:
parted /dev/sda u b p
Number Start End Size File system Name Flags
1 1048576B 537919487B 536870912B msftdata
Пришлось отформатировать его, используя это в качестве последнего шага:
mkfs -t fat -F 32 /dev/sda1