lehrkraefte:blc:informatik:glf22:backup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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://support.microsoft.com/en-us/windows/back-up-your-bitlocker-recovery-key-e63607b4-77fb-4ad3-8022-d6dc428fbd0d|Hier finden Sie eine Anleitung]], wie Sie Ihren Schlüssel sichern können.
   * Ziel: Zusätzliches, lokales Backup auf dem Datenträger Ihrer Wahl.   * Ziel: Zusätzliches, lokales Backup auf dem Datenträger Ihrer Wahl.
 +
 +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://www.heise.de/hintergrund/Automatisierte-Scans-Microsoft-sperrt-Kunden-unangekuendigt-fuer-immer-aus-7324608.html
  
 ===== Einrichten ===== ===== Einrichten =====
Line 24: Line 27:
 </code> </code>
  
 +===== git-bash in bestimmtem Ordner öffnen, Verzeichnispfade finden =====
 +  * In Ordner navigieren, Rechts-Klick, «git-bash here»:
 +{{:lehrkraefte:blc:informatik:glf22:pasted:20221122-093400.png}}
 +  * Dort das Backup mit
 +<code bash>
 +bash stickbackup.bash
 +</code>
 +starten.
 +
 +  * In der git-bash kann mit dem Kommando ''pwd'' wird der aktuelle Pfad angezeigt werden (oder kopieren aus der FileExplorer Kopfzeile sollte auch gehen).
 +
 +===== Hintergrund: der cp-Befehl =====
 +Der cp-Befehl kopiert Dateien (lokal). Folgende Varianten sind möglich:
 +<code bash>
 +cp DATEI ZIELNAME                  # Macht eine Kopie von DATEI mit Namen ZIELNAME
 +cp DATEI ZIELNORDNER               # Kopiert die DATEI in den ZIELORNDER
 +cp DATEI1 DATEI2 ...  ZIELORDNER   # Kopiert die Dateien DATEI1, DATEI2, etc. in den ZIELORDNER
 +</code>
 +==== 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 **<nowiki>--backup=simple</nowiki>** wird von existierenden Dateien ein Kopie erstellt (gleicher Name, mit ''~'' am Schluss).
 +  * Mit **<nowiki>--backup=numbered</nowiki>** wird von exstierenden Dateien eine nummerierte Kopie erstellt. 
 +
 +Die komplette Liste der Optionen ist [[https://man7.org/linux/man-pages/man1/cp.1.html|auf der man-page]] zu finden.
 +===== Alternativen =====
 +Für das Backup auf einen Server empfiehlt sich das Tool ''rsync'', das ähnlich wie ''cp'' funktioniert, aber eben auch übers Netz. Plus ''rsync'' wurde auf Geschwindigkeit optimiert, dass wirklich nur geänderte Dateien übertragen werden. 
 +
 +
 +===== 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), und dort kann der effektive Pfad der git-bash.exe Datei kopiert werden.
 +
 +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 "$0"`
 +# Nur das Verzeichnis dieser Datei
 +target=`dirname $unixname`
 +
 +makeBackup() {
 +    local source="$1"
 +    echo "Backup $source"
 +    echo " -> Ziel $target"
 +    cp -vru "$source" "$target"
 +    echo "Fertig mit $source"
 +}
 +
 +makeBackup "/c/Users/Ivo.Bloechliger/OneDrive - Kt. SG BLD/Informatik"
 +# Hier weitere Verzeichnisse sichern...
 +
 +
 +# Warten auf Enter, damit noch angezeigt wird, ausser bei Start auf der Kommandozeile
 +if [ "$target" != "."
 +then
 +    echo "Bitte [Enter] drücken..."
 +    read
 +fi
 +</code> 
 +
 +
 +====== Automatisiertes Backup ======
 +Ziel ist es, ein Pythonprogramm zu schreiben, das ständig überprüft, ob der Backup-Stick eingesteckt ist und wenn ja, das Backup ausführt. 
 +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"C:\Program Files\Git\git-bash.exe"   # Eventuell anpassen!
 +backupscript = r"D:\stickbackup2.bash"           # Eventuell anpassen!
 +
 +while True:
 +    # Check if stick is present
 +    if os.path.exists(backupscript):
 +        print("Stick present")
 +        # Backup starten
 +        print("Starte backup...")
 +        cmd = [gitbash, backupscript]
 +        subprocess.call(cmd)
 +        time.sleep(30*60)  # Halbe Stunde
 +    else:
 +        print("nix da!")
 +    time.sleep(10)   
 +</code>
 +
 +===== 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://fginfo.ksbg.ch/~ivo/videos/informatik/22-23/07-absoluter-pfad-der-gitbash.mp4
 +  * Die Verankerung in der Windows Aufgabenplanung kann wie folgt erledigt werden: https://fginfo.ksbg.ch/~ivo/videos/informatik/22-23/08-python-programm-in-aufgabenplanung-von-windows.mp4
  • lehrkraefte/blc/informatik/glf22/backup.1669105818.txt.gz
  • Last modified: 2022/11/22 09:30
  • by Ivo Blöchliger