In letzter Zeit wurde ja über Datensicherung des Profilordners geschrieben. Ich habe ein universelles Linux-Script geschrieben, das eignet sich auch für den Profilordner recht gut. Vielleicht findet es ja in Zukunft nicht nur bei mir Verwendung.
Gruß Harry
Bash
#!/bin/bash
# Die erste Zeile muß so stehen bleiben!
#============================================================================
# Linux: Inkrementelle Datensicherung mit rsync
# für den Firefox-Profilordner, aber auch für andere Ordner geeignet.
#============================================================================
#
# Diese Script sichert den kompletten Inhalt eines Quell-Ordners in einen
# Ziel-Ordner. Dabei wird für jede Sicherung ein neuer Unterordner mit
# dem Namen "Jahr-Monat-Tag-Stunde-Minute" der Sicherung erzeugt.
#
# Neue oder veränderte Dateien seit der letzten Sicherung werden normal
# kopiert und belegen Speicherplatz auf dem Ziel-Laufwerk.
#
# Wurden Dateien seit der letzten Sicherung nicht verändert, wird in der
# neuen Ordnerstruktur lediglich ein Hardlink (das ist ein zusätzlicher
# Verzeichniseintrag) auf die ohnehin vorhandenen Dateien erzeugt. Diese
# Hardlinks belegen auf dem Ziellaufwerk keinen zusätzlichen Speicherplatz,
# sondern nur den unbedingt nötigen Verzeichniseintrag.
#
# Trotzdem kann auf jeden Sicherungsstand komplett zugegriffen und eine
# Rücksicherung vorgenommen werden. Die Rücksicherung kann mit normalen
# Werkzeugen des Betriebssystems erfolgen, man benötigt dafür keine
# Spezialprogramme wie Entpacker etc.
#
# Aufräumen darf man auch. Man kann einfach die nicht mehr benötigten
# Ordner mit den älteren Sicherungen löschen. Die eigentlichen Daten,
# also der Inhalt der Dateien, wird erst zur neuen Verwendung freigegeben
# wenn auch der letzte Hardlink darauf gelöscht wird.
#
# Die Anzeige des benutzten und verfügbaren Speicherplatzes funktioniert
# beim ersten Sicherungslauf noch nicht, weil der Zielordner noch nicht
# angelegt wurde.
#
# Falls "rsync" nicht installiert ist, die Linux-Distribution bietet es
# sicherlich zur Installation an. Es ist seit langem bekannt und bewährt.
#
##### EINSCHRÄNKUNG #####
#
# Man kann diese inkrementelle Datensicherung nicht mit einem Packer
# kombinieren, weil "rsync" den Dateivergleich nur mit ungepackten Dateien
# machen kann.
#
# Dieses Script funktioniert nur, wenn das Dateisystem auf dem
# Zieldatenträger Hardlinks unterstützt. FAT ist dafür ungeeignet.
# Linux-Dateisysteme sollten alle funktionieren, ich nehme Ext4.
#
##### FÜR WINDOWS #####
#
# Falls jemand dieses Script für Windows umschreiben möchte,
# NTFS sollte auch funktionieren und "rsync" gibt es auch für Windows.
#
##### GARANTIE #####
#
# Bei mir funktioniert dieses Script gut.
# Da ich aber kein Profi bin, gibt es auch keine Garantie.
# Gruß Harry (HT-Frogger)
#
#============================================================================
# Hier kommen die persönlichen Anpassungen
#============================================================================
#
# Als erstes geben wir den "Quellordner" an, also den Ordner, der den
# zu sichernden Ordner enthält. Bitte den kompletten absoluten Pfad
# angeben, "~/" für das Homeverzeichnis funktioniert nicht.
#
# Im Falle des Firefox-Profilordners ist es "/home/user/.mozilla".
#
Quellordner="/home/user/.mozilla"
#
# Dann geben wir den "Sicherungsordner" an, also den zu sichernden Ordner,
# der sich im "Quellordner" befindet. Dieser wird komplett mit allen Dateien,
# Unterordnern und den darin befindlichen Dateien gesichert.
#
# Im Falle des Firefox-Profilordners ist es "firefox"
#
Sicherungsordner="firefox"
#
# Zuletzt geben wir den "Zielordner" an, also den Ordner, in dem die Ordner
# der einzelnen Sicherungspunkte aus Datum/Uhrzeit liegen oder liegen sollen.
# Bitte auch hier wieder den kompletten absoluten Pfad angeben.
#
# Hier im Beispiel ist es der Ordner "firefox-profilsicherungen"
# auf einem USB-Stick mit der Bezeichnung "stick" bzw der Ordner
# "firefox/firefox-profilsicherungen" im Homeverzeichnis des Users.
#
#Zielordner="/run/media/user/stick/firefox-profilsicherungen"
Zielordner="/home/user/firefox/firefox-profilsicherungen"
#============================================================================
# Ab hier bitte nichts mehr ändern, außer man weiß genau was man tut!
#============================================================================
#
# Einleitenden Text, Größe des Zielordners (belegter Speicherplatz) sowie
# den belegten und verfügbaren Speicherplatz auf dem Ziellaufwerk anzeigen.
#
# Danach die Sicherheitsabfrage mit Abbruchmöglichkeit.
#
echo -e "\e[7m* ================================================================== *\e[27m"
echo "* Dieses Script führt eine Datensicherung durch"
echo "* Quellordner: ${Quellordner}"
echo "* Sicherungsordner: ${Sicherungsordner}"
echo "* Zielordner: ${Zielordner}"
echo "* ------------------------------------------------------------------ *"
echo "* Größe (belegter Speicherplatz) des Zielordners"
du -sh ${Zielordner}
echo "* ------------------------------------------------------------------ *"
echo "* Belegter und verfügbarer Speicherplatz auf dem Ziellaufwerk"
df -hl ${Zielordner}
echo -e "\e[7m* ================================================================== *\e[27m"
echo "* Start mit [Eingabetaste, Abbruch mit [Strg]+[C]"
read Weiter
echo "* ------------------------------------------------------------------ *"
#
# Mit dem "date"-Befehl erzeugen wir einen Namen für den Ordner des
# heutigen Sicherungspunktes. Dafür wird das aktuelle (heutige) Datum
# in der Form "Jahr+Monat-Tag-Stunde-Minute" (in Zahlen) verwendet.
# Dadurch haben wir eine übersichtliche Reihenfolge der Sicherungspunkte.
#
Heute=$(date +%Y-%m-%d-%H:%M)
#
#
# Jetzt wird der "Zielordner" angelegt falls er noch nicht existiert.
#
echo "* Ordner ${Zielordner} anlegen"
if [ -d ${Zielordner} ]; then
echo "* Der Ordner existiert bereits"
else
echo "* Der Ordner wird angelegt"
mkdir "${Zielordner}/"
fi
echo "* ------------------------------------------------------------------ *"
#
# Im Zielordner wird der Ordner für den heutigen Sicherungspunkt angelegt.
#
echo "* Ordner ${Zielordner}/${Heute} anlegen"
if [ -d ${Zielordner}/${Heute} ]; then
echo "* Der Ordner existiert bereits"
else
echo "* Der Ordner wird angelegt"
mkdir "${Zielordner}/${Heute}"
fi
echo "* ------------------------------------------------------------------ *"
#
# Jetzt wechseln wir in den "Quellordner" damit der rsync-Befehl
# den "Sicherungsordner" relativ verwenden kann.
# Dadurch wird die Baumstruktur im "Zielordner" kurz und übersichtlich.
#
cd ${Quellordner}
#
# Der "rsync"-Befehl:
#
# Kopiert relativ ab aktuellem "Quellordner" den "Sicherungsordner"
# zum heutigen "Zielordner" und vergleicht dabei ob die Dateien im
# vorherigen "Zielordner" inzwischen verändert worden sind. Falls nein,
# wird lediglich eine Hardlink auf diese vorhandenen Dateien gesetzt.
#
# Syntax: rsync [Optionen] Quelle Ziel [--link-dest=Referenz]
#
# -a: Archiv-Modus -rlptgoD
# -v: Gesprächig, zeigt jede kopierte Datei an, mir ist das zu viel...
# -R: Relative Pfadnamen
# -c: Bitweise vergleichen, das ist sicherer, dauert aber länger!
# --delete: In der Quelle nicht mehr vorhandene Dateien auch im Ziel löschen
# --link-dest=: Wenn sich die Dateien gegenüber denen im hier angegebenen
# Referenzverzeichnis nicht verändert haben, werden nur Hardlinks erzeugt.
#
echo "* Der Kopiervorgang beginnt jetzt"
rsync -aR --delete "./${Sicherungsordner}/" "${Zielordner}/${Heute}/" --link-dest="${Zielordner}/letzte-sicherung/"
echo "* Der Kopiervorgang ist beendet"
echo "* ------------------------------------------------------------------ *"
#
# Zum Schluss erstellen oder ändern wir mit dem "ln"-Befehl einen symbolischen
# Link "letzte-sicherung" auf das heutige Verzeichnis.
# Dieser wird bei der nächsten Sicherung von "rsync" zum Vergleich benötigt.
#
# Syntax: ln [Optionen] Ziel Linkname
#
# -n: Ziel, das bereits eine symbolische Verknüpfung auf ein Verzeichnis ist,
# Wie normale Datei behandeln
# -s: Symbolische statt harter Verknüpfung erzeugen
# -f: Vorhandene Ziele entfernen
#
echo "* Symbolischen Link \"letzte-sicherung\" anlegen bzw ändern"
ln -nsf "${Zielordner}/${Heute}" "${Zielordner}/letzte-sicherung"
echo "* ------------------------------------------------------------------ *"
echo "* Größe (belegter Speicherplatz) des Zielordners"
du -sh ${Zielordner}
echo "* ------------------------------------------------------------------ *"
echo "* Belegter und verfügbarer Speicherplatz auf dem Ziellaufwerk"
df -hl ${Zielordner}
echo -e "\e[7m* ================================================================== *\e[27m"
#
# Falls das Script nicht aus einer Konsole gestartet wurde, kann man jetzt
# in Ruhe die Ausgaben bewundern bevor es mit [Eingabetaste] geschlossen
# wird und verschwindet.
#
echo "* Die Datensicherung ist fertig, Script beenden mit [Eingabetaste]"
read Weiter
#
exit 0
Alles anzeigen