[[Vorlage(Getestet, focal, bionic, )]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis(1)]] Mit diesem Skript lassen sich leicht mehrere Verzeichnisse packen und in ein anderes Verzeichnis kopieren. Dieses Verzeichnis sollte auf einer anderen Festplatte oder auf einem Server liegen. Die Verzeichnisse werden mit [:tar:] in ein Archiv gepackt und [:bzip2:]-komprimiert. Für regelmäßige Datensicherungen siehe auch [:Skripte/inkrementelles_Backup:Inkrementelles Backup]. = Erstellen des Skripts = Zuerst erstellt man ein neues Verzeichnis '''bin''' im Home-Verzeichnis für das Skript, falls dieses noch nicht existiert. Danach öffnet man einen Texteditor [2] und kopiert den folgenden Text hinein: {{{#!code bash #!/bin/bash DATE=$(date +%Y-%m-%d-%H%M%S) # pfad sollte nicht mit "/" enden! # Dies ist nur ein Beispiel - bitte an eigene Bedürfnisse anpassen. # Man muss im entsprechenden Verzeichnis schreibberechtigt sein. BACKUP_DIR="/mnt/backup" # Hier Verzeichnisse auflisten, die gesichert werden sollen. # Dies ist nur ein Beispiel - bitte an eigene Bedürfnisse anpassen. # Bei Verzeichnissen, für die der User keine durchgehenden Leserechte hat (z.B. /etc), treten Fehler auf. # Pfade sollten nicht mit "/" enden! SOURCE="$HOME/bin $HOME/.gaim " tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE }}} Diese Datei speichert man im '''bin'''-Verzeichnis unter dem Namen '''backup'''. Nun exportiert man entweder einmalig den Pfad {{{#!vorlage Befehl export PATH=$PATH:$HOME/bin }}} oder öffnet ein neues Terminal, der Pfad wird dann automatisch hinzugefügt. = Konfiguration = Das Backup-Verzeichnis (im Skript BACKUP_DIR genannt) gibt das Verzeichnis an in dem das Archiv erstellt werden soll. Es sollte zumindest auf einer anderen Festplatte liegen, besser noch auf einem anderen PC, welcher ins Dateisystem eingebunden wurde. {{{#!vorlage Warnung Sollen Verzeichnisse wie '''/etc''' gesichert werden, für die nur root durchgehende Leserechte hat, so muss das Skript mit [:sudo:] gestartet werden. }}} Die zu sichernden Verzeichnisse werden in der Variablen `SOURCE` angegeben. Es sollte kein "/" am Ende der Verzeichnisse stehen und es muss ein Leerzeichen vor dem abschließenden " sein. Manchmal möchte man bestimmte Unterverzeichnisse aus '''/home/$user''' vom Backup ausschliessen, weil sie z.B. zu groß sind oder anderweitig in Backup-Prozesse eingebunden sind. Dazu kann die Option `--exclude` verwendet werden, mit den Namen der auszuschliessenden Verzeichnisse: {{{#!vorlage Befehl tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE --exclude="VirtualBox VMs" --exclude=".icedove" }}} = Aufrufen des Skripts = Das Skript muss vor der Nutzung noch ausführbar gemacht werden [3], dazu im Terminal [1] folgendes eingeben: {{{#!vorlage Befehl chmod u+x $HOME/bin/backup }}} Das Skript lässt sich jetzt mit folgendem Befehl starten: {{{#!vorlage Befehl backup }}} = Backup automatisch verschlüsseln = Bei der Erstellung eines Backups bietet es sich aus verschiedenen Gründen an, dieses automatisch zu verschlüsseln. Dazu gibt es mehrere Möglichkeiten: == Truecrypt/dm_crypt == Wer verschlüsselte Dateisysteme, z.B. mit Hilfe von Truecrypt oder LUKS benutzt, kann einfach ein Verzeichnis auf dem verschlüsselten Laufwerk als Zielort für das Backup (s.o.) angeben. == Symmetrisch mit GnuPG == Um eine verschlüsselte Backup-Datei zu erstellen, kann man das Tar-Archiv im Skript direkt in die symmetrische Verschlüsselung von [:GnuPG:] pipen. Dazu ersetzt man im Skript einfach die Tar-Zeile mit dieser: {{{#!code bash tar -cjp $SOURCE | gpg -z 0 -c > $BACKUP_DIR/backup-$DATE.tar.bz2.gpg }}} Man wird beim Ausführen des Backup-Skriptes dann nach einem Passwort gefragt, mit welchem das Backup verschlüsselt wird. Dadurch erhält man dann zum Beispiel eine Datei '''backup-2007-11-24-170024.tar.bz2.gpg'''. Diese entschlüsselt man wieder mit dem Befehl: {{{#!vorlage Befehl gpg --output backup-2007-11-24-170024.tar.bz2 --decrypt backup-2007-11-24-170024.tar.bz2.gpg }}} Weitere Optionen zur symmetrischen Verschlüsselung von GnuPG findet man in den [:man:Manpages] von gpg. == Asymmetrisch mit GnuPG == {{{#!vorlage Warnung Es ist sinnlos, auf diese Weise auch die GnuPG-Schlüssel zu sichern. Im Falle eines Datenverlusts wird zum zurückspielen (bzw. entschlüsseln) des Backups der eigene GnuPG-Schlüssel benötigt. Wenn man seine GnuPG-Schlüssel sichern möchte sollte man also eine symmetrische Verschlüsselung wählen. }}} Wer einen GnuPG-Schlüssel hat, kann das Backup mit dem eigenen öffentlichen Schlüssel verschlüsseln. Dann ist im Vergleich zur symetrischen Methode zum erstellen des Backups keine Passworteingabe nötig. Die tar- Zeile im Skript lautet dafür: {{{#!code bash tar -cjp $SOURCE | gpg -z 0 --encrypt -r DEINE_SCHLÜSSEL_KENNUNG > $BACKUP_DIR/backup-$DATE.tar.bz2.gpg }}} Wobei die Schlüssel-Kennung zum Beispiel in Form der Email-Adresse eingegeben werden kann. = tar - Entferne führende „/“ von Elementnamen = ''(engl. "tar: Removing leading '/' from member names")'' Wenn diese Meldung erscheint, bedeutet es, dass man mit absoluten Pfadnamen arbeitet, wie zB '''/etc''', '''/usr/share''' aber auch die $HOME-Variable ist ein absoluter Pfad. Tar liefet eine Meldung diesbezüglich, weil es bei absoluten Pfaden passieren kann, dass beim Entpacken des Backups automatisch die alten Ordner überschrieben werden, was nicht immer gewünscht ist. Um diese Meldung zu entfernen, verwendet man relative Pfadnamen also '''etc''' und '''usr/share''' und benutzt anstatt $HOME eine eigene Variable ``HOMEPATH="home/$USER"``. Vor dem Ausführen von Tar in dem Skript muss man jetzt noch, damit die Ordner gefunden werden, ins Root-Verzeichnis wechseln mit ``cd /``. Ein Skript, welches diese Warnung nicht bringt, könnte zum Beispiel so aussehen: {{{#!code bash #!/bin/bash DATE=$(date +%Y-%m-%d-%H%M%S) BACKUP_DIR="mnt/backup" HOMEPATH="home/$USER" SOURCE="$HOMEPATH/bin $HOMEPATH/.gaim " cd / tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE }}} Das entfernen des führenden "/" könnte man mit der Option "-P" ausschalten, aber Vorsicht wenn man sich entschließt dies zu tun kann man die Dateien und Ordner nicht mehr an einem beliebigen Ort wieder herstellen. Tar wird sie dann nämlich immer vom Root-Verzeichnis "/" ausgehend entpacken. Um die Meldung zu umgehen kann man die Option "-C /" benutzen um ins Root-Verzeichnis zu wechseln und dann beim Quellordner den anführenden / weglassen. Beispiel: {{{#!code bash tar -cjpf /home/$(whoami)/pidgin-backup.tar.bz2 -C / home/$(whoami)/.purple }}} # tag: System, Sicherheit