我正在开发一个应用程序,在该应用程序中,我需要创建始终具有完全相同的分区布局的驱动器。我最初的想法是使用sfdisk转储原始驱动器的分区表。
sfdisk -d /dev/sdX > parttable
然后使用以下命令将其应用于所有其他驱动器:
sfdisk /dev/sdX < parttable
但是这种方法似乎行不通。我从USB驱动器中转储了正确的分区表,然后使用gparted创建了一些随机分区,然后尝试将初始分区表写回到驱动器中。
但是问题是,无法识别该分区。例如,Gparted将分区列为未知分区。我想,我可能必须格式化创建的分区,因为partitiontable不存储有关文件系统的信息。
我的问题现在是:我可以以某种方式保存分区表和有关分区(文件系统等)的信息,并以此方式创建新驱动器(最好在一个命令中)。
顺便说一句:msdos可分割
编辑:一种替代方法是,自己收集有关驱动器(例如,部件表,文件系统)的所有数据,然后手动创建命令。是否有可能(也许是分开的)在一个命令中创建分区表并格式化多个分区?
在以下条件下工作:
/dev/sdx
/dev/sdy
/dev/sdy4
/dev/sdy1
安装在/boot
带有ext3
文件系统的最终系统中/dev/sdy2
挂载/
在最终系统中ext4
/dev/sdy3
安装在/home
带有ext4
文件系统的最终系统中master_system.tar.gz
root
,而不sudo
是以root用户身份或su
在终端中登录dupe_mnt
工作目录中有一个目录只需更改一次,即可“复制”原始磁盘的分区结构。
sfdisk --dump /dev/sdx > master_table
由于只有您在所讨论的系统上可以确定要从用作主服务器的Debian系统中复制什么,因此我不再赘述。我知道你不会复制/proc
,/dev/
和/sys
目录,但也有一定要别人来排除。您可以选择任意方式创建该归档文件,然后将其命名master_system.tar.gz
。其中应包含/boot
和/home
目录。就这样,设置完成,直到您更改要复制的Debian系统或磁盘分区为止。
创建的脚本称为sys_replicate.sh
:
#!/bin/sh
target=$1;
sfdisk /dev/${target} < master_table;
# Format the swap partition
mkswap /dev/${target}4;
# Format the data partitions
mkfs.ext3 /dev/${target}1;
mkfs.ext4 /dev/${target}2;
mkfs.ext4 /dev/${target}3;
# Mount the target root filesystem and its parts
mount /dev/${target}2 dupe_mnt;
mount /dev/${target}1 dupe_mnt/boot;
mount /dev/${target}3 dupe_mnt/home;
# Copy the master system to the target
cd dupe_mnt;
tar -zxvpf ../master_system.tar.gz;
cd ..;
# Unmount the new system
cd ..
umount /dev/${target}3;
umount /dev/${target}1;
umount /dev/${target}2;
#done
该文件sys_replicate.sh
需要execute
设置该位。chmod +x sys_replicate.sh
要使用此过程,请在设置后连接目标磁盘。如果是USB,请确保系统已识别它可用。如果是内部硬盘驱动器,显然需要重新启动,系统应该会自动找到它。一旦连接成功,是非常肯定你知道/dev
它是,因为添加磁盘可以重新排列的字母。准备就绪后,在root
shell中执行:
./sys_replicate.sh sdy
设备名称/dev/sdy
,/dev/sdx
显然需要更改以匹配您的操作系统。而且,事实证明,它sfdisk
可以处理GPT磁盘和扩展分区,因此不需要我前面的注释问题。如果使用比原始磁盘大的磁盘作为副本,则所有内容仍然可以使用。但是,您将浪费无法轻松回收的空间,因此在选择要复制的主磁盘之前,请考虑到这一点。
分区结构的创建和Debian系统的复制是独立的,因此更改其中一个不需要更新另一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句