snapper

Für die Verwaltung von Snapshots hat SUSE das Tool Snapper entwickelt. Dieses eignet sich meiner Meinung nach auch prima für Raspbian.

Voraussetzungen

$ sudo apt-get install libdbus-1-dev libacl1-dev libboost-all-dev libxml2-dev libmount-dev xsltproc docbook-utils xmlto ldp-docbook-xsl libpam-dev gettext e2fslibs-dev
$ sudo apt-get remove xpdf
$ sudo apt-get autoremove

Snapper Sourcen herunterladen und entpacken

$ wget https://github.com/openSUSE/snapper/archive/v0.5.0.zip
$ unzip v0.5.0.zip
$ cd snapper-0.5.0

Übersetzung vorbereiten

$ make -f Makefile.repo
$ ./configure LIBS="-lboost_system -lboost_thread"

Übersetzen

$ make

Das temporäre Filesystem des Compilers

Kommt es bei der Übersetzung zu der Fehlermeldung "No space left on device", obwohl im Filesystem mit den Quelldateien genügend Platz vorhanden ist, muss evt. das temporäre Filesystem des gcc angepasst werden:

$ export TMPDIR=/run/shm

Beim nächsten Übersetzungsversuch sollte die Fehlermeldung nicht mehr erscheinen.

Korrektur von Version 3.3 bis 4.1

Die Datei snapper/BtrfsUtils.cc habe ich in den Sourcen im oberen Teil um eine Zeile ergänzen müssen:

#define BTRFS_QGROUP_LEVEL_SHIFT 48

Erst danach klappte die Übersetzung. Bitte darauf achten, dass die Zeile nicht von einem "#ifndef ... #endif" oder ähnlichem umschlossen wird.

Installieren

$ sudo make install

Es geht los - mit cron sollen regelmäßige Snapshots erzeugt werden

# btrfs subvolume create /.snapshots
# mkdir /etc/sysconfig
# echo 'SNAPPER_CONFIGS="root"' > /etc/sysconfig/snapper
# cp /etc/snapper/config-templates/default /etc/snapper/configs/root
# mv /etc/cron.hourly/suse.de-snapper /etc/cron.hourly/suse-snapper
# mv /etc/cron.daily/suse.de-snapper /etc/cron.daily/suse-snapper

Man beachte, dass der Cron von Raspbian keine Punkte im Dateinamen der cron-files mag.

Ein wenig mit Snapper spielen

pi@fhem ~ $ echo "alt" > datei
pi@fhem ~ $ sudo snapper list
Type   | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+---+-------+------+------+---------+-------------+---------
single | 0 |       |      | root |         | current     |
pi@fhem ~ $ sudo snapper create -d "sicherung"
pi@fhem ~ $ sudo snapper list
Type   | # | Pre # | Date                     | User | Cleanup   | Description | Userdata
-------+---+-------+--------------------------+------+-----------+-------------+---------
single | 0 |       |                          | root |           | current     |
single | 1 |       | Sat Mar  7 00:55:27 2015 | root |           | sicherung   |
pi@fhem ~ $ echo "neu" > datei
pi@fhem ~ $ sudo snapper create -d "jetzt"
pi@fhem ~ $ sudo snapper list
Type   | # | Pre # | Date                     | User | Cleanup   | Description | Userdata
-------+---+-------+--------------------------+------+-----------+-------------+---------
single | 0 |       |                          | root |           | current     |
single | 1 |       | Sat Mar  7 00:55:27 2015 | root |           | sicherung   |
single | 2 |       | Sat Mar  7 00:56:54 2015 | root |           | jetzt       |
pi@fhem ~ $ sudo snapper -v undochange 1..2
create:0 modify:6 delete:0
modifying /home/pi/datei
modifying /opt/fhem/log/FBDECT_garage-2015.log
modifying /var/log/auth.log
modifying /var/log/daemon.log
modifying /var/log/snapper.log
modifying /var/log/syslog
pi@fhem ~ $ cat datei
alt
pi@fhem ~ $

Um nur den Inhalt einer bestimmten Datei zurückzusetzen, können Sie diese als Option mitgeben:

sudo snapper -v undochange 1..2 "/home/pi/datei"

Fehlersuche/h2> Auf einem System kam es beim Aufruf von Snapper zu folgender Fehlermeldung:

pi@rpi ~ $ sudo snapper list
Fehler (org.freedesktop.DBus.Error.Spawn.ExecFailed).

Dieses Kommando schaffte Abhilfe:

pi@rpi ~ $ sudo chmod o+x /usr/lib/dbus-1.0/dbus-daemon-launch-helper

Previous page: btrfs Next page: rsync