Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf22:backup [2022/11/22 09:30] Ivo Blöchliger created |
lehrkraefte:blc:informatik:glf22:backup [2022/11/30 10:30] (current) Ivo Blöchliger [Automatisiertes Backup] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Einfaches Backup ====== | ====== Einfaches Backup ====== | ||
* Daten in der Cloud sind nur «ziemlich sicher», aber nicht auf Ihrem Gerät. | * Daten in der Cloud sind nur «ziemlich sicher», aber nicht auf Ihrem Gerät. | ||
- | * Daten, die lokal auf Ihrem Gerät gespeichert sind, sind wahrscheinlich auf einem verschlüsselten Datenträger. Wenn Sie den Schlüssel nicht haben, sind die Daten futsch. | + | * Daten, die lokal auf Ihrem Gerät gespeichert sind, sind wahrscheinlich auf einem verschlüsselten Datenträger. Wenn Sie den Schlüssel nicht haben, sind die Daten futsch. [[https:// |
* Ziel: Zusätzliches, | * Ziel: Zusätzliches, | ||
+ | |||
+ | Auslöser ist folgender Artikel (wobei an unserer Schule auch sonst schon einfach Daten verschwunden sind, bei 1700 Benutzern kommt das schon mal vor): | ||
+ | * https:// | ||
===== Einrichten ===== | ===== Einrichten ===== | ||
Line 24: | Line 27: | ||
</ | </ | ||
+ | ===== git-bash in bestimmtem Ordner öffnen, Verzeichnispfade finden ===== | ||
+ | * In Ordner navigieren, Rechts-Klick, | ||
+ | {{: | ||
+ | * Dort das Backup mit | ||
+ | <code bash> | ||
+ | bash stickbackup.bash | ||
+ | </ | ||
+ | starten. | ||
+ | |||
+ | * In der git-bash kann mit dem Kommando '' | ||
+ | |||
+ | ===== Hintergrund: | ||
+ | Der cp-Befehl kopiert Dateien (lokal). Folgende Varianten sind möglich: | ||
+ | <code bash> | ||
+ | cp DATEI ZIELNAME | ||
+ | cp DATEI ZIELNORDNER | ||
+ | cp DATEI1 DATEI2 ... ZIELORDNER | ||
+ | </ | ||
+ | ==== Optionen ==== | ||
+ | * Verzeichnisse werden normalerweise nicht kopiert, ausser man gibt die **-r** Option (rekursiv) an, dann werden auch komplette Ordner mit allen Unterordnern kopiert. | ||
+ | * Normalerweise wird nichts angezeigt. Mit **-v** werden die kopierten Dateien ausgegeben. | ||
+ | * Es werden immer alle Dateien kopiert, ausser man gibt die **-u** Option (update) an, dann werden nur jene Dateien kopiert, die noch nicht existieren oder deren Originaldatei ein neueres Datum hat. | ||
+ | * Mit **< | ||
+ | * Mit **< | ||
+ | |||
+ | Die komplette Liste der Optionen ist [[https:// | ||
+ | ===== Alternativen ===== | ||
+ | Für das Backup auf einen Server empfiehlt sich das Tool '' | ||
+ | |||
+ | |||
+ | ===== Starten aus dem File-Explorer ===== | ||
+ | Windows kann so konfiguriert werden, dass .bash-Dateien direkt mit git-bash gestartet werden können. Dazu muss aber erst der Pfad der git-bash ermittelt werden. Ein Möglichkeit dazu führt über das Start-Menu, Rechts-klick auf den git-bash Icon, «Open containing folder», dort auf Eigenschaften von git-bash (ist nur eine Verknüpfung), | ||
+ | |||
+ | Dann Rechts-Klick auf eine .bash -Datei, Ausführen mit, Programm auswählen und dort mit den Pfad der git-bash eingeben. | ||
+ | |||
+ | Wenn das funktoniert hat, Rechts-Klick auf eine .bash-Datei und dort einstellen, dass .bash-Dateien mit git-bash geöffnet werden. | ||
+ | |||
+ | Das nächste Problem ist, dass das aktuelle Verzeichnis bei der Ausführung nicht jenes ist, in dem die .bash Datei liegt. Mit folgenden Ergänzungen klappt es aber: | ||
+ | <code bash> | ||
+ | # Pfad von dieser Datei ist in $0 | ||
+ | # Konvertieren nach Unix-Pfad (d.h. /d anstatt D:\) | ||
+ | unixname=`cygpath " | ||
+ | # Nur das Verzeichnis dieser Datei | ||
+ | target=`dirname $unixname` | ||
+ | |||
+ | makeBackup() { | ||
+ | local source=" | ||
+ | echo " | ||
+ | echo " -> Ziel $target" | ||
+ | cp -vru " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | makeBackup "/ | ||
+ | # Hier weitere Verzeichnisse sichern... | ||
+ | |||
+ | |||
+ | # Warten auf Enter, damit noch angezeigt wird, ausser bei Start auf der Kommandozeile | ||
+ | if [ " | ||
+ | then | ||
+ | echo "Bitte [Enter] drücken..." | ||
+ | read | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Automatisiertes Backup ====== | ||
+ | Ziel ist es, ein Pythonprogramm zu schreiben, das ständig überprüft, | ||
+ | Dieses Programm soll jeweils automatisch beim Anmelden gestartet werden. | ||
+ | |||
+ | Das python-Programm sieht wie folgt aus (die beiden Pfade müssen wohl noch angepasst werden, siehe die Screencasts unten) | ||
+ | <code python autobackup.py> | ||
+ | import os | ||
+ | import subprocess | ||
+ | import time | ||
+ | |||
+ | gitbash = r" | ||
+ | backupscript = r" | ||
+ | |||
+ | while True: | ||
+ | # Check if stick is present | ||
+ | if os.path.exists(backupscript): | ||
+ | print(" | ||
+ | # Backup starten | ||
+ | print(" | ||
+ | cmd = [gitbash, backupscript] | ||
+ | subprocess.call(cmd) | ||
+ | time.sleep(30*60) | ||
+ | else: | ||
+ | print(" | ||
+ | time.sleep(10) | ||
+ | </ | ||
+ | |||
+ | ===== Verankerung in der Windows Aufgabenplanung ===== | ||
+ | * Erstens müssen die Pfade im obigen Python angepasst werden. Den absoluten Pfad zur git-bash kann wie folgt ermittelt werden: https:// | ||
+ | * Die Verankerung in der Windows Aufgabenplanung kann wie folgt erledigt werden: https:// |