Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:glf22:backup [2022/11/25 16:00] – [Automatisiertes Backup] Ivo Blöchliger | lehrkraefte:blc:informatik:glf22:backup [2022/11/30 09:30] (current) – [Automatisiertes Backup] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Einfaches Backup ====== | ||
| + | * 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. [[https:// | ||
| + | * 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 ===== | ||
| + | Erst mal müssen Sie herausfinden, | ||
| + | |||
| + | Auf dem Datenträger Ihrer Wahl, legen Sie eine Datei .bash Datei an, z.B. '' | ||
| + | |||
| + | <code bash stickbackup.bash> | ||
| + | # Achtung: Das Skript muss von der Kommandozeile im Verzeichnis | ||
| + | # gestartet werden, wohin das Backup gemacht werden soll. | ||
| + | |||
| + | makeBackup() { | ||
| + | local source=" | ||
| + | echo " | ||
| + | cp -vru " | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | makeBackup "/ | ||
| + | # Hier weitere Verzeichnisse sichern... | ||
| + | </ | ||
| + | |||
| + | ===== 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:// | ||