Voglio fare un backup dell'intera partizione layout di un disco rigido, comprese le unità logiche, in modo da poter ripristinare quel layout su un altro disco. non desidera copiare il contenuto delle partizioni, solo il layout. Per le partizioni primarie ed estese, è facile:
dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore
Ma quando si tratta del layout delle partizioni logiche, mi chiedo se esiste tra gli strumenti standard un modo simile per salvare il layout? Immagino che il problema principale sia trovare gli offset per le posizioni degli EBR, perché con quello, dd
farà il resto. Tieni presente che devo essere in grado di rimettere tutto su un (possibilmente) disco vuoto e quindi ripristinare lo stesso layout. Utilizzo di strumenti di partizionamento come fdisk
o parted
va bene, ma devo essere in grado di automatizzarne l'uso (scripting) e non dovrebbero dipendere da alcun pacchetto relativo a X, solo da riga di comando.
Il mio piano di backup lo sta facendo manualmente in un piccolo script python usando il modulo struct, ma speravo piuttosto che ci fosse un modo più semplice.
Risposta accettata:
Puoi usare sfdisk per questa attività anche nei dischi partizionati GPT*.
Salva:
sfdisk -d /dev/sdX > part_table
Ripristina mantenendo gli stessi ID di disco e partizione**:
sfdisk /dev/sdX < part_table
Ripristina la generazione di nuovi ID disco e partizione**:
grep -v ^label-id part_table | sed -e 's/, *uuid=[0-9A-F-]*//' | sfdisk /dev/sdY
Note
*:per tabelle delle partizioni GPT , questo richiede sfdisk
da util-linux 2.26 o successivo. È stato riscritto da zero sopra libfdisk.
**:per impostazione predefinita sfdisk
copierà gli ID del disco e della partizione invariati, anziché generarne di nuovi. Quindi il nuovo disco sarà un clone dell'originale, non solo un altro disco con lo stesso layout. Nota che /dev/disk/by-uuid/
di Linux esamina gli UUID del filesystem, tuttavia, non gli UUID nella tabella delle partizioni. sfdisk
genererà nuovi UUID se elimini i riferimenti agli ID delle partizioni (, uuid=...
) e il riferimento all'id del disco (label-id: ...
) dalla discarica .