如何在脚本中使用 parted 并获取空白的 PARTLABEL?

如何在脚本中使用 parted 并获取空白的 PARTLABEL?

我正在尝试创建软件来恢复我已经使用脚本创建的备份。幸运的是,我不需要恢复任何备份,但现在我想将其中一个备份的内容移动到 SSD 驱动器,结果发现这比我想象的要难。

现在我正在尝试重新创建分区表。我想使用 parted,因为它似乎是脚本中最容易使用的工具。我发现有两件事让我感到困惑。

首先,像这样的命令

parted /dev/sdh mklabel gpt mkpart primary fat32 2048 4096 print

生成一个 gpt 分区表和一个分区,但它显示名称为“primary”,这就是 blkid 所称的“PARTLABEL”。阅读信息和手册页似乎表明它应该是文件系统类型,而不是名称。经过实验,似乎不再接受任何 fs 类型,而是名称。

第二个问题是:我根本不想在分区上有名字,但是我尝试过,""" "没有成功。

那么:如何创建没有 PARTLABEL 的分区?我当然可以在 gparted 中执行此操作,但我无法编写脚本。

答案1

我找到了方法,但结果很奇怪。如果我想让 parted 接受一个空字符串(至少出于这个目的),我必须引用它三次。没错,三次。

它看起来像这样:

parted -s $destination mkpart "'\ '" ntfs  1874585600s  1876559871s

因此,在双引号内使用单引号内的反斜杠空格。这样可行,而且我找不到更简单的方法。例如,如果我将其省略,parted 仍会接受该命令,但会使用“ntfs”作为文件系统类型和分区名称。

呼呼呼。

答案2

我尝试了各种方法来获得一个实际的空白名称(也),但没有一种方法适用于非交互式脚本。但是使用管道自动“输入”命令是可行的:

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

相关内容