Notebook Backup to external crypted disk

Here is the documentation, how i making backups of my notebook. I use a external USB harddisk, which is connected to my docking station. On system logon, i check if the external disk is present and mount it. A cronjob starts a backup script, which creates backups with rsync if the backup partition is mounted. Please note, that you have to replace some values in this howto. Replace “sebastian” with your username and replace “sdb” if it is needed.Das ist eine kleine Dokumentation, wie ich Sicherungen von meinem Notebook mache. Ich verwende eine externe USB-Festplatte, welche mit meiner Dockingstation verbunden ist. Beim einloggen, wird geprüft ob die Platte vorhanden ist und sie entsprechend eingehängt. Bitte beachtet, dass einige Dinge in dieser Anleitung ggf. geändert werden müssen. Der Benutzername “sebastian” sollte durch eueren eigenen ersetzt werden und “sdb” muss ggf. auch angepasst werden.

1 Install cryptsetup1 Cryptsetup installieren

sudo aptitude install cryptsetup

2 Create crypto disk2 Cryptodisk erstellen

sudo cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdb

sudo cryptsetup luksOpen /dev/sdb backup

For an automatic mount of the backup disk, you need a keyfile:Um die Platte automatisch zu mounten, wird ein keyfile benötigt.

mkdir /home/sebastian/backup

sudo dd if=/dev/urandom of=/home/sebastian/backup/keyfile bs=1024 count=4

sudo cryptsetup luksAddKey /dev/sdb /home/sebastian/backup/keyfile 

3 Create Filesystem3 Filesystem erzeugen

sudo mkfs.ext4 /dev/mapper/backup

sudo e2label /dev/mapper/backup Backup

4 Create Mount point4 Mountpunkt erstellen

sudo mkdir /media/backup
sudo chown sebastian:sebastian /media/backup

5 Mount5 Mount

sudo mount /dev/mapper/backup /media/backup

6 Create automount6 Automount einrichten

The external backup storage is not always connected with my system. I created a script which mount the external harddrive if it is connected. For an external connected device it is not sure that it always called “sdb”. So i used the UUID instead.Die externe Backupfestplatte ist nicht immer mit dem System verbunden. Deshalb wird zuerst geprüft ob sie vorhanden ist. Da sich bei externen Festplatten nicht garantieren lässt, dass immer “sdb” verwendet wird, soll die UUID verwendet werden.

6.1 Get device UUID6.1 UUID ermitteln

sudo blkid

You will get an output like this:Man sollte eine Ausgabe wie diese bekommen:

[...]
/dev/mapper/backup: LABEL="Backup" UUID="4d0c0001-3cac-43ad-abf7-904e3a2f91b1" TYPE="ext4"
[...]

6.2 Create script6.2 Skript erstellen

vim ~/backup/mount.sh

Script:Skript:

#!/bin/bash
if [ /dev/disk/by-uuid/e9fbd5d9-215b-4a82-a794-7ab7724ac3f8 ]
then
    cryptsetup luksOpen -d ~/backup/keyfile /dev/disk/by-uuid/e9fbd5d9-215b-4a82-a794-7ab7724ac3f8 backup
    mount /dev/mapper/backup /media/backup
fi

Make executable:Ausführbar machen:

chmod +x ~/backup/mount.sh

6.2 Add script to sudoers6.2 Skript zu sudoers hinzufügen

sudo visudo

Open the sudoers file and insert:Öffnet das sudoers file und fügt folgendes ein:

sebastian ALL = (root) NOPASSWD: /home/sebastian/backup/mount.sh

Add this script to startup applications. http://wiki.ubuntuusers.de/AutostartAnschließend das Skript in den Autostart aufnehmen. http://wiki.ubuntuusers.de/Autostart

7 Backup7 Backup

Script with rsync to create the backups.Rsync-Skript um die Backups zu erstellen.

7.1 Backup script7.1 Skript anlegen

vim ~/backup/backup.sh

Script:Skript:

#!/bin/bash

logger "Start backup"

if mount|grep "/media/backup"; then

    if [ $((`date +"%u"`%2)) -eq 0 ]; then
        SUBDIR='01'
    else
        SUBDIR='02'
    fi

    rsync -a --delete /home/sebastian /media/backup/$SUBDIR/

else
   logger "Backupdisk not found. Backup skipped."
fi

logger "Finished backup"

Make executable:Ausführbar machen:

chmod +x  ~/backup/backup.sh

This script backups my homedir into two folders. Date +”%u” returns the day of the week. (1,2,3,4,5,6,7) It switch the folders if the number is even or odd. If “/media/backup” is not mounted, the script quits without making backups.Dieses Skript sichert mein Home-Verzeichnis in zwei Verzeichnisse. Date +”%u” liefert den Tag der Woche. (1,2,3,4,5,6,7) Es wechselt die Verzeichnisse je nachdem ob die Nummer gerade oder ungerade ist. Sollte “/media/backup” nicht gemounted sein, beendet es sich ohne eine Sicherung durchzuführen.

You can add more rsync lines if you like, or set “SUBDIR” to date +”%u” to make a backup every day in a different folder.Man kann einfach weitere rsync Zeilen hinzufügen oder “SUBDIR” gleich durch das Ergebnis von date +”%u” ersetzen um an jedem Tag der Woche eine eigene Sicherung durchzuführen.

The “logger” command writes a view infos into the syslog.Der “logger” Befehl schreibt noch ein paar Informationen in das Syslog. So lässt sich nachprüfen ob, wann und wie lange die Sicherung gelaufen ist.

7.2 Create cronjob

crontab -e

Insert:Einfügen:

0 21 * * * /home/sebastian/backup/backup.sh > /dev/null

This cronjob executes the backup script every day at 21:00 oclock.Dieser Cronjob führt das Skript täglich um 21:00 Uhr aus.

This Post Has One Comment

  1. This is a very basic idea of how to use the task scheduler and batch files to make backups.

Schreibe einen Kommentar

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.