I'm working on an application, where I need to create drives with always the exact same partition layout. My initial thought was to once dump the partition table of the original drive with sfdisk.sfdisk -d /dev/sdX > parttableAnd then apply it to all other drives with:sfdisk /dev/sdX < parttableBut this method doesn't seem to work. I dumped the right partitiontable from an USB-drive, then created some random partitions with gparted and tried then to write the initial partitiontable back to the drive. But the problem is, the partition isn't recognized. Gparted for example lists the partition as unknown. I figured, I probably have to format the created partition, as the partitiontable stores no information about filesystems.My question is now: Can I somehow save the partitiontable and information about the partitions (filesystem etc.) and create a new drive this way (at best in one command).btw.: msdos partiontableEdit: An alternative would be, to gather all the data about the drives (e.g. parttable, filesystems) myself and create the command manually. Is it possible (maybe with parted) to create the partition table and format multiple partition in one command?
Copy disc layout and partitions to another drive
partition;fdisk;parted;partition table
Working with the following conditions:The original disk to copy is /dev/sdxThe original disk is properly partitioned/labeled/flaggedThe filesystem contents of the original disk will be ignoredThe destination disk, to copy to, will be /dev/sdyThe swap partition will be /dev/sdy4The boot partition will be /dev/sdy1 mounted on /boot in the final system with ext3 filesystemThe root partition will be /dev/sdy2 mounted on / in the final system with ext4 filesystemThe users partition will be /dev/sdy3 mounted on /home in the final system with ext4 filesystemThe Debian system you want to copy has been tarred and gzipped to master_system.tar.gzAll files, including the script, will be stored in the working directoryThe script will be executed from the same working directoryThe script will be run as root, not sudo but either log in as root, or su in a terminalThere is a directory dupe_mnt in the working directoryTo copy the original disk's partition structure, only needed one time, unless the structure is changed.sfdisk --dump /dev/sdx > master_tableSince only you, at the system in question can determine what to copy from the Debian system that serves as the master, I'm not going to go into any of that. I know you won't copy the /proc, /dev/, and /sys directories, but there are sure to be others to exclude. Create that archive any way you choose, and name it master_system.tar.gz. This should include the /boot and /home directories in it. That's it, setup is done until you change either the Debian system you're copying, or the partitioning of the disk.The script to create, called sys_replicate.sh is:#!/bin/shtarget=$1;sfdisk /dev/${target} < master_table;# Format the swap partitionmkswap /dev/${target}4;# Format the data partitionsmkfs.ext3 /dev/${target}1;mkfs.ext4 /dev/${target}2;mkfs.ext4 /dev/${target}3;# Mount the target root filesystem and its partsmount /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 targetcd dupe_mnt;tar -zxvpf ../master_system.tar.gz;cd ..;# Unmount the new systemcd ..umount /dev/${target}3;umount /dev/${target}1;umount /dev/${target}2;#doneThe file sys_replicate.sh needs to have the execute bit set. chmod +x sys_replicate.shTo use the process, once setup, connect the target disk. If it's a USB, make sure the system has recognized that it's available. If it's an internal HDD, obviously it'll require a reboot, and the system should find it automatically. Once connected, be VERY sure you know which /dev it is, since adding disks can rearrange the letters. Once it's ready, in a root shell, execute:./sys_replicate.sh sdyThe device name /dev/sdy and /dev/sdx obviously will need to be changed to match your operational system. Also, as it turns out, sfdisk can handle GPT disks and extended partitions, so my earlier comment question was not needed. If you use a disk, as the copy, that is larger than the original, everything will still work. You will have wasted space that you can't easily reclaim, however, so take that into account before selecting the master disk to copy.The creation of the partition structure, and the copying of the Debian system are independent, so changes to one do not require updating the other.