Backup

From Blue-IT.org Wiki

Vorwort

Ein exzellenter Artikel zum Thema Datensicherung findet sich auf dem Wiki von Ubuntuusers.de. Dort werden die wichtigsten theoretischen Aspekte zusammengefasst.

Einfaches Backup

--Apos 02:13, 9 January 2012 (CET)

Déja dup

Die einfachste Backuplösung für Linux-Systeme ist wohl Dèja Dup. Einfach zu bedienen, automatisiert, in das System integriert. Es ermöglicht zudem inkrementelle Backups. In den Paketquellen von Ubuntu und als Standardbackupprogramm ab ubuntu 11.10 installiert (in den Systemeinstellungen unter "Datensicherung").

Lucky Backup

Auf rsync basierend. Hochkonfigurierbar. Extrem flexibel, da es alle von rsync unterstützten Funktionen bietet. Backups können um Skripte, die vor und nach dem Backup ausgeführt werden (z.B. eine Datenbanksicherung) ergänzt werden. In den Paketquellen von Ubuntu enthalten.

Partclone

Mount a partclone image with virtualbox

THX to [1]

See VirtualBox Rawdisk Support

Mount the restored partition via loop device:

sudo mount -t ext4 -o loop,nosuid,nodev /media/whereever/sda1.ext4-ptcl-restored.img /mnt

Create vbox image from a physical disk where the backed-up partition comes from (/dev/sda, partition #5 in my case):

sudo VBoxManage internalcommands createrawvmdk -filename vbox-sda.vmdk -rawdisk /dev/sda -partitions 5 -relative

Change to the virtualbox folger and in the generated vbox-sda.vmdk, replace the physical /dev/sda5 with /dev/loop0

Start virtualbox from the commandline where you’re sure to have access to /dev/loop0. You have have to be part of the group disk

newgrp disk
usermod -G disk -a your_user_name

Create a new VirtualBox virtual machine with an existing hard drive image, the one created above!

Boot the image. You can use a live CD, the super grub disk or any other distribution to see / edit / alter the content or the boot behaviour of the disk.

Mount clonezilla image

Uncompress and mount an image previously made with clonezilla with partclone (THX to [2])

Find out the compression algorithm of your image with the file command

file VolGroup00-LogVol00.ext3-pctl-img.gz.aa

Combine files, uncompress it (in this case with gzip) and create the image file

cat VolGroup00-LogVol00.ext3-pctl-img.gz.* | gzip -d -c | partclone.restore -C -s – -O /dir-to-new-image/image-name.img

Mount the uncompressed image

mount -o loop /dir-to-new-image/image-name.img /mnt/name

Unison

Unison ist ein leider nicht mehr aktiv weiter entwickeltes Programm zur echten Synchronisation zweier Verzeichnisse. Bitte lesen Sie den zugehörigen Wikipedia Artikel zu Unison.

Hinweis zum Löschen/Ändern von Profilen

Unison bietet die Möglichkeit, sogenannte Profile anzulegen. Leider lassen sich Profile anlegen, aber nicht bearbeiten oder löschen.

Unison legt die Profile in einfachen Textdateien ab. Dazu öffnen sie einfach den (versteckten) Ordner .unison in Ihrem persönlichen Ordner (Home Verzeichnis - /home/benutzername/.unison). Darin finden Sie Textdateien zu den Profilen, die Sie anpassen oder löschen können.

Denken Sie daran: Versteckte Dateien sind nur sichtbar, wenn der Dateibrowser entsprechend konfiguriert ist (z.B. Nautilus: Menü->Ansicht->Verborgene Dateien anzeigen).

Einfaches Backup mit rsync und zenity

Dieses sehr einfache Skript kopiert alle Daten der Heimatverzeichnisses (/home/Benutzername) eines entfernten Rechners auf den lokalen Rechner.

Dabei werden alle lokalen Dateien ersetzt (rsync wird mit dem Parameter --delete aufgerufen). Die Synchronisation erfolgt also nur in eine Richtung!

Diese Anleitung bezieht sich auf die Einrichtung in einer Gnome (Gnome 2.22) Desktop Oberfläche.

Download

Das Skript finden Sie in gepackter (!) Form hier oder Sie kopieren den Quelltext weiter unten in eine eigene Datei (der Dateiname spielt keine Rolle).

Wenn Sie das Skript heruntergeladen haben, speichern Sie es bitte in einem lokalen Verzeichnis. Erstellen Sie z.B. das versteckte (!) Verzeichnis .Skripte in Ihrem Homeverzeichnis:

mkdir ~/.Skripte

und kopieren Sie das Backupskript dort hinein.

Sie müssen das Skript ausführbar machen. Mit einem Rechtsklick im Dateibrowser öffnen Sie das Eigenschaften Fenster und dort den Reiter Zugriffsrechte:

Datei ausführbar machen

Erster Start ohne Parameter

Jetzt können Sie das Skript das erste Mal anklicken.

Datei in Nautilus ausführen

Klicken Sie auf ausführen.

Es wird eine Fehlermeldung erscheinen:

Start aus Nautilus heraus

Es fehlen noch diverse Parameter zum Aufruf.

In der eben gezeigten Fehlermeldung ist der genaue Aufrufsyntax beschrieben:

/home/benutzername/skriptname IP_Adresse_des_Desktop Verzeichnis
  • IP_Adresse_des_Desktop: bezeichnet die Internetadresse desjenigen Rechners von dem die Daten bezogen werden.
  • Verzeichnis: bezeichnet das lokale Untervereichnis unterhalb des Heimatverzeichnisses des aktuellen Benutzers. Ein Punkt "." steht für das Benutzerverzeichnis selbst (Standard).

ACHTUNG: Wird der Punkt als Verzeichnis angegeben, werden alle zu sichernden Daten und Unterverzeichnisse im Heimatverzeichnis unwiderbringlich ersetzt!

Start

Erstellen Sie einen Benutzerdefinierten Programmstarter mit dem Gnome-Panel oder rufen Sie das Skript von der Befehlszeile aus mit den eben genannten Parametern auf. Der Autor empfiehlt, den Starter mit der Option "Typ: Im Terminal starten" zu versehen, damit sie eventuelle Fehlermeldungen und den Verlauf der Sicherung verfolgen können.

Gnome Panel Starter anlegen

Im weiteren Verlauf wird die Verbindung zum externen Rechner mit "ping" geprüft und ggf. das Programm beendet.

Ist der Rechner erreichbar werden im nächsten Dialog die zu synchronisierenden Verzeichnisse angezeigt:

Hauptdialog

Es werden nur die hier angegebenen Verzeichnisse gesichert. Möchten Sie mehr Ordner hinzufügen, müssen Sie das Skript mit einem Editor manuell anpassen.

Für jedes Verzeichnis wird ein separater rsync Prozess gestartet. Jeweils mit Passwortabfrage. Sie sollten evtl. eine passwortlose Verbindung einrichten (siehe ENG).

Nochmalige Warnung: Mit bestätigen auf OK werden ALLE Dateien im als zweiten Parameter angegebenen Verzeichnis unwiderbringlich überschrieben.

Quellcode

Dies hier ist immer die aktuelle Version des Skriptes: Download Link

Für die Steuerung des Backups Zwei Blöcke wichtig.

Die Zeilen

DOC="Dokumente"
PIC="Bilder"
MUS="Musik"
VID="Videos"
DES="Desktop"
WEB=".mozilla"
EMAIL=".mozilla-thunderbird"
VBOX=".VitualBox"

sind nur Variablen zur einfacheren Änderung von wichtigen Verzeichnissen, welche dann im nächsten Block verwendet evtl. ergänzt werden:

	true "$DOC" \
	true "$PIC" \
	true "$MUS" \
	true "$VID" \
	true "$DES" \
	true "$WEB" \
	true "$EMAIL" \
	false "$VBOX" \

Letzteren Einträgen können pro Zeile beliebig viele Verzeichnisse hinzugefügt werden nach dem Muster:

(true|false) "Verzeichnis" \

Die Anführungszeichen und der Backslash "\" am Ende sind essentiell. true bedeutet, das Verzeichniss ist standardmässig mit einem Häckchen versehen. false das Gegenteil.

Das Editieren der Datei setzt Kenntnis der Programmierung der Bash voraus und des Umganges mit dem Programm zenity.

[Update --Apos 17:19, 13 April 2008 (CEST)] Fensterüberschrift verallgemeinert.

#!/bin/bash
#
#DESKTOP="192.168.178.24"
DESKTOP="$1"
#BACKUPDIR="."
BACKUPDIR="$2"
USERDIR="/home/${USER}"
FULLBACKUPDIR="${USERDIR}/${BACKUPDIR}"

TITLE="Backup Home von ${USER}@${DESKTOP} nach $FULLBACKUPDIR"
TEXT="Bitte wählen Sie die zu sichernden Verzeichnisse\n\
welche vom Desktop auf das Notebook gesichert werden sollen,\n\
aus der folgenden Liste aus.\n\n\
Sychronisieren von Computer mit IP: ${DESKTOP}\n\
in das lokale Verzeichnis: ${FULLBACKUPDIR}\n\n\
ALLE DATEIEN WERDEN OHNE NACHFRAGE ÜBERSCHRIEBEN.\n\
Die Sicherung erfolgt in das Heimatverzeichnis dieses Benutzers."
HEIGHT="600"
WIDTH="600"

# Parameter Testen
[ "$BACKUPDIR" ] || zenity --error --width="900" --title="$TITLE" \
--text="Sie müssen als zweiten Parameter ein Verzeichnis angeben in das gesichert werden soll. Dies kann ein extra Backupverzeichnis sein, oder einfach '.' (Punkt) für das aktuellen Heimatverzeichnsis.\n\n\
ACHTUNG, alle Daten werden dabei überschrieben.\n\n\
Legen sie dazu einen Anwendungsstarter im Panel\n\
mit folgendem Inhalt an: \n\n\
${0} 192.168.178.80 .\n\
${0} 192.168.178.80 mein_backup."

[ "$BACKUPDIR" ] || exit 1

# Ping Desktop
ERROR_PING="1"

ping -c1 $DESKTOP && ERROR_PING="0"
[ "$ERROR_PING" == "1" ] && zenity --error \
	--title="$TITLE" --text "Rechner mit der IP $DESKTOP ist nicht erreichbar.\n\
Bitte erst die Netzwerkverbindung herstellen.\n\
Programm wird beendet."
[ "$ERROR_PING" == "1" ] && exit 1

# Ins Backupverzeichnis wechseln
mkdir -p ${FULLBACKUPDIR}
cd ${FULLBACKUPDIR}

DOC="Dokumente"
PIC="Bilder"
MUS="Musik"
VID="Videos"
DES="Desktop"
WEB=".mozilla"
EMAIL=".mozilla-thunderbird"
VBOX=".VitualBox"

LIST="$(zenity  \
	--height="$HEIGHT" --width="$WIDTH" \
	--title="$TITLE" \
	--text="$TEXT" \
	--list --checklist --multiple \
	--separator="  " \
	--print-column='ALL' \
	--column="Backup" --column="Verzeichnis" \
	true "$DOC" \
	true "$PIC" \
	true "$MUS" \
	true "$VID" \
	true "$DES" \
	true "$WEB" \
	true "$EMAIL" \
	false "$VBOX" \
)"

(
cd /home/$USER/$BACKUPDIR
sleep 5
ERROR_RSYNC=1
#XPARAM=" -bg white -fg black -T 'Backup, Abbrechen mit Strg+C' "
XTERMTITLE="Backup läuft, Abbrechen mit Strg+C"
PERCENT=0

for entry in ${LIST}; do 
	PERCENT=$(($PERCENT+10))
	echo "${PERCENT}" 
        echo "# $entry wird gesichert." 
	rsync -av --delete ${DESKTOP}:${USERDIR}/${entry} ${USERDIR}/${BACKUPDIR}/.
done

echo "100" "Backup beendet."
) | zenity  --progress \
		--auto-close \
		--height="$HEIGHT" --width="$WIDTH" \
		--title="$TITLE" \
		--text="Backup läuft ..." \
		--percentage=0

[ "$?" = -1 ] && zenity --error --text="Backup wurde abgebrochen."

Rsync Bandbreite beschränken

Sicherungen werden manchmal vom oder zum Internet hin vorgenommen. Um dabei die Bandbreite zu beschränken kann der Parameter

--bwlimit=Bandbreite_in_KB_pro_Sekunde

Ein Upload auf den Webserver mit 30 KB/s würde dann so aussehen:

rsync -av --bwlimit=30 /home/myinternetfiles webserver:/var/www/.