snapper ist ein Linux-Tools zum Anlegen und verwalten von Snapshots auf Btrfs oder LVM-Dateisystemen.
Kernfunktion von snapper ist das automatisierte Erstellen von stündlichen1) Snapshot sowie das automatisierte „Ausdünnen“ der erstellten Snapshot. Beim „Ausdünnen“ wird täglich die Zahl der verbleibenden Snapshot auf eine vorgegebene Zahl pro Stunde2), Tag, Woche, Monat und Jahr reduziert.
Das Tool stammt ursprünglich aus dem OpenSUSE-Umfeld und ist mittlerweile in den Paketquellen der meisten Linux-Distributionen verfügbar.
In diesem Artikel wird nur der Einsatz in einem Btrfs-Umfeld behandelt.
Für die Nutzung von snapper ist es notwendig, vorab eine entsprechende Konfiguration zu erstellen3). Beim hier betrachteten Einsatz in einem Btrfs-Umfeld ist es notwendig, dass es sich bei dem Verzeichnis, für das die Snapshots erstellt werden sollen, um ein Btrfs-Subvolume handelt.
Eine Konfiguration wird wie folgt erstellt:
snapper -c <name> create-config </Pfad/zum/Subvolume>
Die Vorgaben für die jeweilige Konfiguration ist in der Datei /etc/snapper/configs/<name>
abgelegt und kann dort mit einem Texteditor bearbeitet werden. Die Datei ist gut mit Kommentaren dokumentiert.
In der Voreinstellung ist die Bearbeitung nur mit root-Rechten möglich. Unter Debian/-, Ubuntu- und sowie davon abgeleiteten Linuxen ist daher die Verwendung von sudo
notwendig.
sudo nano /etc/snapper/configs/<name>
Die wichtigsten Schlüsselworte der Konfigurationsdatei:
Schlüsselwort | Funktion |
---|---|
SUBVOLUME | Pfad zum Subvolume, für das die Snapshot angelegt werden.4) |
FSTYPE | Typ des Filsystems; sollte man lieber nicht verändern. |
SPACE_LIMIT | Anteil des Dateisystems, das die Snapshot diese Konfiguration einnehmen dürfen. |
FREE_LIMIT | Anteil des Dateisystems, das frei bleiben muss. |
ALLOW_USERS ALLOW_GROUPS | Nutzer bzw. Gruppen, die mit dieser Konfiguration arbeiten dürfen. Sofern hier keine Vorgaben erfolgen, kann nur der Nutzer root zugreifen bzw. Verwendung von sudo ist notwendig. |
SYNC_ACL | Beim Wert "yes" können die in ALLOW_USERS und ALLOW_GROUPS benannten Benutzer und Gruppen auf das Verzeichnis mit den Snapshot unter </Pfad/zum/Subvolume/.snapshots> zugreifen. |
NUMBER_CLEANUP | Beim Wert "yes" wird der number cleanup algorithm aktiviert. Dieser Algorithmus löscht nur Snapshots die den Bereinigungstyp number haben. Die periodisch automatisch erstellten Snapshots mit dem Bereinigungstyp timeline werden nicht einbezogen. |
NUMBER_MIN_AGE | Mindestalter der Snapshots, die in die Bereinigung einbezogen werden, in Sekunden |
NUMBER_LIMIT | Zahl der verbleibenden Snapshots |
NUMBER_LIMIT_IMPORTANT | Zahl der verbleibenden Snapshots mit der Priorität important. |
TIMELINE_CREATE | Beim Wert "yes" werden automatisch regelmäßige Snapshsots angelegt. Das Steuern des Zeitintervalls zwischen dem Anlegen der einzelnen Snapshot kann nicht über die Konfigurationsdatei erfolgen.5) |
TIMELINE_CLEANUP | Beim Wert "yes" wird der timeline cleanup algorithm aktiviert. Dieser Algorithmus löscht nur die periodisch automatisch erstellten Snapshots. |
TIMELINE_MIN_AGE | Mindestalter der Snapshots, die in die Bereinigung einbezogen werden, in Sekunden |
TIMELINE_LIMIT_HOURLY | Zahl der Snapshots, die für den vergangenen Tag pro Stunde verbleiben sollen.6) |
TIMELINE_LIMIT_DAILY | Zahl der Snapshots, die für den vergangenen Tag pro Stunde verbleiben sollen. |
TIMELINE_LIMIT_WEEKLY | Zahl der Snapshots, die für die vergangenen Woche (beginnt mit dem Montag) verbleiben sollen. |
TIMELINE_LIMIT_MONTHLY | Zahl der Snapshots, die für den vergangenen Monat verbleiben sollen. |
TIMELINE_LIMIT_YEARLY | Zahl der Snapshots, die für das vergangenen Jahr verbleiben sollen. |
EMPTY_PRE_POST_CLEANUP | Beim Wert "yes" wird der empty-pre-post cleanup algorithm aktiviert. Dieser Algorithmus löscht pre-post-Snapshots bei denen der post-Snapshot fehlt. |
EMPTY_PRE_POST_MIN_AGE | Mindestalter der Snapshots, die in die Bereinigung einbezogen werden, in Sekunden |
Eine detaillierte, englischsprachige Beschreibung ist bei snapper.io verfügbar.
systemd
notwendig.