Rdiff-backup: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K (Verschiebung community -> extra)
 
(13 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{SEITENTITEL:rdiff-backup}}
{{SEITENTITEL:rdiff-backup}}
rdiff-backup ist, wie der Name sagt, ein Backupprogramm. Es basiert auf den Bibliotheken von [[rsync]] und legt für geänderte Dateien nur diffs(Dateien mit Unterschieden) zur alten Version in ein gesondertes Verzeichnis ab. Dadurch hat man bei einem Platzbedarf, der den des Originals, im Vergleich mit anderen Backupprogrammen, nur wenig übersteigt und dennoch viele Revisionen.
rdiff-backup ist, wie der Name sagt, ein Backup-Programm. Es basiert auf den Bibliotheken von [[rsync]] und legt für geänderte Dateien nur diffs (Dateien mit Unterschieden) zur alten Version in ein gesondertes Verzeichnis ab. Dadurch hat man bei einem Platzbedarf, der den des Originals, im Vergleich mit anderen Backupprogrammen, nur wenig übersteigt und dennoch viele Revisionen.
{{righttoc}}
{{righttoc}}
== Installation ==
{{installation|repo=extra|paket=rdiff-backup}}
rdiff-backup ist im '''Community''' Repository vorhanden und kann daher über
pacman -S rdiff-backup
installiert werden.


== Backupskript ==
== Backupskript ==
Zeile 12: Zeile 9:
Daher wird jetzt ein Skript für diesen Zweck erstellt. Zuerst muss man sich im Klaren sein: Was will ich sichern, wohin, wie oft und welchen Platz brauche ich. Es ist klug, auf jeden Fall ''/home'' und ''/etc'' zu sichern, hat man Datenbanken oder einen Webserver, können auch ''/srv'' oder ''/var'' von Belang sein. Es sollte mindestens einmal im Monat gesichert werden, aber ich denke, dass muss jeder selber wissen. Mit rdiff-backup macht es keinen Sinn, auf read-only Datenträger wie DVDs zu sichern, dann sind so gut wie alle Vorteile, die man mit rdiff-backup hat, weg. Als Normalnutzer wird man also sicherlich auf eine (externe) Festplatte sichern. Diese sollte auf jeden Fall größer sein als die Quellordner und -dateien, wie viel größer hängt davon ab, wie oft sich Dateien ändern.
Daher wird jetzt ein Skript für diesen Zweck erstellt. Zuerst muss man sich im Klaren sein: Was will ich sichern, wohin, wie oft und welchen Platz brauche ich. Es ist klug, auf jeden Fall ''/home'' und ''/etc'' zu sichern, hat man Datenbanken oder einen Webserver, können auch ''/srv'' oder ''/var'' von Belang sein. Es sollte mindestens einmal im Monat gesichert werden, aber ich denke, dass muss jeder selber wissen. Mit rdiff-backup macht es keinen Sinn, auf read-only Datenträger wie DVDs zu sichern, dann sind so gut wie alle Vorteile, die man mit rdiff-backup hat, weg. Als Normalnutzer wird man also sicherlich auf eine (externe) Festplatte sichern. Diese sollte auf jeden Fall größer sein als die Quellordner und -dateien, wie viel größer hängt davon ab, wie oft sich Dateien ändern.


Bevor begonnen werden kann, muss noch eins überlegt werden: Wie will ich das Backup anstoßen.
Bevor begonnen werden kann, muss noch eins überlegt werden: Wie will man das Backup anstoßen?
* Automatisch per [[Cron]]: Die externe Festplatte muss immer an Computer und Strom angeschlossen sein, was Sicherheitsnachteile bringt, wenn bespielsbeise durch einen Blitz Überspannung fließt oder aus Versehen die Daten überschrieben werden(alles schon passiert…)
* Automatisch per [[Cron]].
* Automatisch wenn die Festplatte an den Computer angeschlossen wird: Es kann nervig sein, wenn man eigentlich Daten wiederherstellen wollte aber erstmal viel Last durch das Backup erzeugt wird.
: ''Nachteile'': Die externe Festplatte muss immer am Computer (und ggf. am Strom) angeschlossen sein, was den Energiebedarf erhöht und auch Risiken in Bezug auf die Datensicherheit mit sich bringt (Überspannung bei Blitzeinschlag, Festplatte wird irrtümlich formatiert, Daten auf der Festplatte werden überschrieben, Lebensdauer der Festplatte nimmt im 24/7 Betrieb erheblich ab, Schäden am Dateisystem bei einem Stromausfall, ...)
* Manuell: Es wird vergessen oder herausgeschoben(ich spreche aus eigener Erfahrung…)
* Automatisch beim anschließen der Festplatten an den Computer.
: ''Nachteil'': Man muss erst das laufende Backup abwarten, bevor man mit der Wiederherstellung von Daten beginnen kann.
* Manuell nach dem Anschließen an den Computer.
: ''Nachteil/e'': Es wird aufgeschoben (bis es vergessen wird) oder es wird gleich vergessen.
 


Wie es gemacht wird, ist vorerst egal, die Anleitung geht aber davon aus, dass die Festplatte angesteckt ist und über /dev/sdb1 gemounted werden kann.
Wie es gemacht wird, ist vorerst egal, die Anleitung geht aber davon aus, dass die Festplatte angesteckt ist und über /dev/sdb1 gemounted werden kann.


Zuerst kommt also die Shebang:
Zuerst kommt also die Shebang:
#!/bin/sh


#!/bin/sh


Dann wird ein Array mit den Quellordnern und Dateien erzeugt:
Dann wird ein Array mit den Quellordnern und Dateien erzeugt:
SRC=( /home /etc )


SRC=( /home /etc )


Und die Festplatte in einen temporären Ordner gemounted:
Und die Festplatte in einen temporären Ordner gemounted:
  BACKUPDIR=$(mktemp -d)
  BACKUPDIR=$(mktemp -d)
  mount /dev/sdb1 ${BACKUPDIR}
  mount /dev/sdb1 ${BACKUPDIR}
cd ${BACKUPDIR}
 


Und das Backup angestoßen:
Und das Backup angestoßen:
for i in ${SRC[@]}
  do
    rdiff-backup -b $i ${BACKUPDIR}/rdiff-backup$i
  done


for i in ${SRC[@]}; do
  rdiff-backup -b $i ./rdiff-backup$i
end


Und schlussendlich muss die Festplatte wieder entfernt werden:
Und schlussendlich muss die Festplatte wieder entfernt werden:
umount /dev/sdb1


umount ${BACKUPDIR}
Das Verzeichnis rdiff-backup auf der Festplatte muss dabei schon existieren!


Nochmal das komplette Skript:


'''Das Skript im ganzen:'''
  #!/bin/sh
  #!/bin/sh
  SRC=( /home /etc )             # bitte anpassen!
#######################
# Variablenzuweisung
#######################
# Die Pfade des Arrays SRC bitte an die eigenen Backup-Wünsche anpassen.
# Wie hier zu sehen ist, werden die Pfade mit Leerzeichen voneinander getrennt.
  SRC=( /home /etc /Pfad/zu/superwichtigen/Dateien /foo/bar )
# "Do NOT touch!" Ausser du weißt ganz genau was du tust!
  BACKUPDIR=$(mktemp -d)
  BACKUPDIR=$(mktemp -d)
  mount /dev/sdb1 ${BACKUPDIR}   # bitte anpassen!
  cd ${BACKUPDIR}
  for i in ${SRC[@]}; do
#######################
  rdiff-backup -b $i ./rdiff-backup$i
# Festplatte mounten
  end
#######################
  umount ${BACKUPDIR}
# Um sicherzugehen, dass man das Skript an dieser Stelle nicht immer anpassen muss,
# wenn man bereits einen USB-Stick oder eine andere USB-Festplatte angeschlossen hat,
# kann man sich eine neue [https://wiki.archlinux.de/title/Einbindung_von_USB-Ger%C3%A4ten#Udev-Regel_erstellen Udev-Regel erstellen] um der (Backup-) Festplatte einen festen Devicenamen zuzuweisen.
  mount /dev/sdb1 ${BACKUPDIR}
#######################
# Backup ausführen
  #######################
  for i in ${SRC[@]}
  do
    rdiff-backup -b $i ${BACKUPDIR}/rdiff-backup$i
  done
#######################
# Festplatte aushängen
#######################
umount /dev/sdb1
 
 
Das Verzeichnis "rdiff-backup" muss vor dem ersten ausführen des Skriptes (einmalig) auf der (Backup-) Festplatte angelegt werden:
  mount /dev/sdb1 /mnt
mkdir /mnt/rdiff-backup
  umount /mnt
 
== Siehe auch ==
*[[rsync]]
*[[Automatische_Sicherung_(Beispiel)]]
*[[Rsnapshot]]
*[[Backups]]
*[[Beispiel_eines_vollautomatisierten_Backups]]


== Weblinks ==
== Weblinks ==
Zeile 61: Zeile 101:


[[Kategorie:Anwendungen]]
[[Kategorie:Anwendungen]]
[[Kategorie:Systemverwaltung]]
[[Kategorie:Tipps und Tricks]]
[[Kategorie:Scripte]]

Aktuelle Version vom 24. Mai 2023, 18:18 Uhr

rdiff-backup ist, wie der Name sagt, ein Backup-Programm. Es basiert auf den Bibliotheken von rsync und legt für geänderte Dateien nur diffs (Dateien mit Unterschieden) zur alten Version in ein gesondertes Verzeichnis ab. Dadurch hat man bei einem Platzbedarf, der den des Originals, im Vergleich mit anderen Backupprogrammen, nur wenig übersteigt und dennoch viele Revisionen.

Installation

Das Programm ist als rdiff-backup in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S rdiff-backup

Backupskript

rdiff-backup hat keine Konfiguration. Es ist aber klug ein Shellscript zu machen, in dem der ganze Backupvorgang komplett festgehalten ist, statt alle paar Tage die vielen Befehle manuell einzugeben.

Daher wird jetzt ein Skript für diesen Zweck erstellt. Zuerst muss man sich im Klaren sein: Was will ich sichern, wohin, wie oft und welchen Platz brauche ich. Es ist klug, auf jeden Fall /home und /etc zu sichern, hat man Datenbanken oder einen Webserver, können auch /srv oder /var von Belang sein. Es sollte mindestens einmal im Monat gesichert werden, aber ich denke, dass muss jeder selber wissen. Mit rdiff-backup macht es keinen Sinn, auf read-only Datenträger wie DVDs zu sichern, dann sind so gut wie alle Vorteile, die man mit rdiff-backup hat, weg. Als Normalnutzer wird man also sicherlich auf eine (externe) Festplatte sichern. Diese sollte auf jeden Fall größer sein als die Quellordner und -dateien, wie viel größer hängt davon ab, wie oft sich Dateien ändern.

Bevor begonnen werden kann, muss noch eins überlegt werden: Wie will man das Backup anstoßen?

  • Automatisch per Cron.
Nachteile: Die externe Festplatte muss immer am Computer (und ggf. am Strom) angeschlossen sein, was den Energiebedarf erhöht und auch Risiken in Bezug auf die Datensicherheit mit sich bringt (Überspannung bei Blitzeinschlag, Festplatte wird irrtümlich formatiert, Daten auf der Festplatte werden überschrieben, Lebensdauer der Festplatte nimmt im 24/7 Betrieb erheblich ab, Schäden am Dateisystem bei einem Stromausfall, ...)
  • Automatisch beim anschließen der Festplatten an den Computer.
Nachteil: Man muss erst das laufende Backup abwarten, bevor man mit der Wiederherstellung von Daten beginnen kann.
  • Manuell nach dem Anschließen an den Computer.
Nachteil/e: Es wird aufgeschoben (bis es vergessen wird) oder es wird gleich vergessen.


Wie es gemacht wird, ist vorerst egal, die Anleitung geht aber davon aus, dass die Festplatte angesteckt ist und über /dev/sdb1 gemounted werden kann.


Zuerst kommt also die Shebang:

#!/bin/sh


Dann wird ein Array mit den Quellordnern und Dateien erzeugt:

SRC=( /home /etc )


Und die Festplatte in einen temporären Ordner gemounted:

BACKUPDIR=$(mktemp -d)
mount /dev/sdb1 ${BACKUPDIR}


Und das Backup angestoßen:

for i in ${SRC[@]}
  do
    rdiff-backup -b $i ${BACKUPDIR}/rdiff-backup$i
  done


Und schlussendlich muss die Festplatte wieder entfernt werden:

umount /dev/sdb1


Das Skript im ganzen:

#!/bin/sh

#######################
# Variablenzuweisung
#######################
# Die Pfade des Arrays SRC bitte an die eigenen Backup-Wünsche anpassen.
# Wie hier zu sehen ist, werden die Pfade mit Leerzeichen voneinander getrennt.
SRC=( /home /etc /Pfad/zu/superwichtigen/Dateien /foo/bar )

# "Do NOT touch!" Ausser du weißt ganz genau was du tust!
BACKUPDIR=$(mktemp -d)


#######################
# Festplatte mounten
#######################
# Um sicherzugehen, dass man das Skript an dieser Stelle nicht immer anpassen muss,
# wenn man bereits einen USB-Stick oder eine andere USB-Festplatte angeschlossen hat,
# kann man sich eine neue Udev-Regel erstellen um der (Backup-) Festplatte einen festen Devicenamen zuzuweisen.
mount /dev/sdb1 ${BACKUPDIR}


#######################
# Backup ausführen
#######################
for i in ${SRC[@]}
  do
    rdiff-backup -b $i ${BACKUPDIR}/rdiff-backup$i
  done


#######################
# Festplatte aushängen
#######################
umount /dev/sdb1


Das Verzeichnis "rdiff-backup" muss vor dem ersten ausführen des Skriptes (einmalig) auf der (Backup-) Festplatte angelegt werden:

mount /dev/sdb1 /mnt
mkdir /mnt/rdiff-backup
umount /mnt

Siehe auch

Weblinks