Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Dieses Skript sichert die Partitionstabellen (MBR-Partitionstabelle/GUID-Partitionstabelle) je angeschlossener Festplatte[1], inkl. Wechseldatenträger (USB). Der Tabellentyp wird mittels GNU Parted ermittelt und mit sfdisk (bei MPT) oder sgdisk (bei GPT) gesichert.
Das Skript in einen Editor[2] kopieren, speichern, ausführbar[3] machen und im Terminal[4] mit Root-Rechten[5] ausführen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #!/bin/bash # Die Partitionstabellen sichern entsprechend Ihres Typs: MBR/GPT # Benötigte PGM: parted, sfdisk,sgdisk,sed # Das Sicherungsverzeichnis kann mit angegeben werden (/Verzeichnis), Standard: ${HOME} # Alle Texthinweise werden über stderr ausgegeben. backupdir=${HOME}/ # Ausgabeverzeichnis-Standard: ${HOME} # Name der Sicherungsdatei: timestamp=$(date +%Y%m%d-%H:%M) # 1. Timestamp YYYYMMDD-HH:MM # 2. der Devisename backupname="Backup" # 3. dieser Name (wird noch ergänzt, sofern lshw installiert) # Extension ist MPT (bei msdos Master-Boot-Record) bzw. GPT (bei gpt GUID-Partiton-Table) export LC_ALL=C # wg. sed bold=$(echo -e "\e[1m") # ein bisschen Farbenspiel für die Konsole red=$(echo -e "\e[1;31m") green=$(echo -e "\e[1;32m") blue=$(echo -e "\e[1;34m") violet=$(echo -e "\e[1;35m") cyan=$(echo -e "\e[1;36m") standard=$(echo -e "\e[0;39m") stars='*****************************************************' # wenn lshw installiert ist, dann Datenträger-Bezeichnung ermitteln für Sicherungsdatie-Namen disks=( $(which lshw >/dev/null && sudo lshw -businfo 2>/dev/null|sed -ne 's#^.*\@.*\(\/dev\/[shm][a-zA-Z]\+\) *\+disk *\+\(.*B\) \(.*\)$#\1:\3\-\2#p'|tr -s ' ' '_') ) # sfdisk aus dem Paket fdisk muss installiert sein which sfdisk 2>&1>/dev/null || { echo -e "\t${red}====> \t sfdisk muss installiert sein \t <====${standard}"; exit 1 ;} # sgdisk aus dem Paket gdisk muss installiert sein which sgdisk 2>&1>/dev/null || { echo -e "\t${red}====> \t sgdisk muss installiert sein \t <====${standard}"; exit 1 ;} # parted muss installiert sein which parted 2>&1>/dev/null || { echo -e "\t${red}====> \t parted muss installiert sein \t <====${standard}"; exit 1 ;} if [[ `whoami` != root ]] # Ausführung mit Rootrechten then echo -e "\n\t\tDas Skript \"$(basename $0)\" muss mit ${bold}${red}Rootrechten${standard} gestarted werden\n" 1>&2 exit 1 fi [ x$1 != 'x' -a -d $(dirname $a'/dummy') ] && backupdir=$(dirname $1'/dummy')/ # $1 Ausgabeverzeichnis vorhanden/existent: j/n echo -e "\n\t\t${stars}\n\t\t* Sichern der verschiedenen Tabellentypen (MTP/GPT) *\n\t\t${stars}\n\t\t Backup-Verzeichnis: ${blue}${backupdir}${standard}\n\t\t" 1>&2 while read -r device do pt=$(sudo parted -s /dev/${device} print|sed -ne 's@^.*Table: \(.*\)$@\1@p') backup_file="${timestamp}_${device}-${backupname}" for disk in ${disks[*]} # Datenträger-Bezeihnung auswerten do [ $(cut -d':' -f1 <<<$disk) == "/dev/${device}" ] && { backup_file="${timestamp}_${device}-${backupname}:$(cut -d':' -f2 <<< $disk)"; break ;} done case $pt in # Liste der bekannten Tabellentypen msdos) # MBR-Partitionstabelle (MPT) echo -e "\t${standard}Typ:\t${green}$pt${standard}\t Device: ${cyan}/dev/${device}${standard}\tDatei: ${blue}${backup_file}.MPT${violet}" 1>&2 $(sudo sfdisk -d /dev/${device} >${backupdir}${backup_file}.MPT) echo ${standard} 1>&2 ;; gpt) # GUID-Partitionstabelle (GPT) echo -e "\t${standard}Typ:\t${green}$pt${standard}\t Device: ${cyan}/dev/${device}${standard}\tDatei: ${blue}${backup_file}.GPT${violet}" 1>&2 $(sudo sgdisk -b ${backupdir}${backup_file}.GPT /dev/${device} 1>&2) echo ${standard} 1>&2 ;; *) # alle weiteren gefundenen als Fehler ausweisen echo -e "${red}====> \t${standard}Sichern Typ:\t${green}$pt${standard}\tDevice:${blue}/dev/${device}${standard}\tBackup: ${red} unbekannter Typ ${green} ${pt}${red} <====${standard}" 1>&2 ;; esac done < <(sed -ne 's/^.*\([shm]d[a-zA-Z]\+ *$\)/\1/p' /proc/partitions) |
Sichern der Tabellen ins Homeverzeichnis:
sudo ./SKRIPTNAME
Sichern der Tabellen in ein übergebenes, frei wählbares Verzeichnis:
sudo ./SKRIPTNAME VERZEICHNIS
Nach erfolgreicher Ausführung dieses Skripts erscheint eine entsprechende Meldung im Terminalfenster. Im Homeverzeichnis des Benutzers befinden sich die ausgegebenen Dateien mit der Endung GBT bzw. MPT.
Das Wiederherstellen hängt von der Art der Partitionstabellen (MPT/GPT) und somit vom verwendeten Programm ab. In den Wikiartikeln sfdisk und sgdisk sind die notwendigen Schritte beschrieben.
Master-Boot-Record - (MBR) Legacy-MBR
Partitionstabelle - (MPT) des Master-Boot-Record
GUID Partition Table - (GPT) incl. Protectiv-MBR
sfdisk - Manpage
sgdisk - Manpage
Diese Revision wurde am 22. Oktober 2015 15:49 von Matthias-K erstellt.