Tagged: shell

Raspberry Pi Backup erstellen

Komplettes Image Backup des Raspberry PI auf USB-HDD oder NAS (Network Attached Storage)

Falls noch nicht am eigenen Leibe erfahren, dass eine MicroSD-Card im RaspBerry PI mal fix das zeitliche segnen kann, empfehle ich, auch vom RaspBerry PI in regelmässigen Abständen ein kompletes Backup zu erstellen.

Der Raspberry Pi kann sich selbst als komplettes Image sichern, hierfür sollte allerdings ein externer Speicher, wie zum Beispiel ein NAS oder eine angeschlossene USB-Festplatte, genutzt werden. Genutzt wird ein Bash-Script das via Cronjob regelmäßig ausgeführt wird. Ich sichere meine RaspBerry Pi’s auf ein Synology NAS. Wer nicht über ein extra NAS verfügt, aber eine FritzBox sein Eigen nennt, kann das Backup auch auf eine an die Fritz!Box angeschlossene USB-Festplatte durchführen (Fritz-NAS). Wie das Fritz-NAS eingerichtet wird, beschreibe ich in einem der nächsten Posts.

Vorteile eines solchen sog. rollierenden FullBackups:

  • vollautomatisch per cron-job
  • der benötigte Speicherplatz, wird nie das n-fache (BACKUP_CNT) der max. SD-Card-Größe übersteigen (die HighWaterMark liegt bei kurzfristig n+1 fullBackups (komplette Größe der SD-Card))

    Für ein Backup der kompletten MicroSD-Card des RaspBerry PI genügt schon folgendes kurzes Shell-Script.

    Folgende Variablen im Script müssen unbedingt angepasst werden:

    • BACKUP_NAME – Name der Sicherung (Tipp: den HostNamen mit in den BackupNamen einbinden)
    • BACKUP_DIR – Pfad zu eurer gemounteten lokalen Festplatte oder NAS
    • BACKUP_CNT – Wieviele alte Backups sollen aufbewahrt werden (Anzahl Versionen)
    • SERVICES_START_STOP – Dienste, die vor dem Backup gestoppt und dann wieder gestartet werden sollen
    #!/bin/bash
    # FileName: fullBackup.sh
     
    BACKUP_DIR="/pfad/backup"
    BACKUP_CNT="10"
    BACKUP_NAME="RspiBackup.rspi.test"      # zur besseren Unterscheidung bei mehreren Raspi's, hänge ich immer noch den Hostnamen hinten dran
    SERVICES_START_STOP="service mysql fhem apache2"
     
    # Stoppe wichtige Services vor dem Backup
    ${SERVICES_START_STOP} stop
     
    # Backup mit dd erstellen und im angegebenen Verzeichnis speichern
    # BlockSize 1MB
    dd if=/dev/mmcblk0 of=${BACKUP_DIR}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).img bs=1MB
     
    # Starte Services nach dem Backup wieder
    ${START_SERVICES} start
     
    # ggf. alte Sicherungen die nach n neuen Sicherungen entfernen
    # je nachdem, wie oft gesichert wird !
    pushd ${BACKUP_DIR}; ls -tr ${BACKUP_DIR}/${BACKUP_NAME}* | head -n -${BACKUP_CNT} | xargs rm; popd
    

    fullBackup.sh ausführbar machen, verschieben nach /usr/local/bin und cronjob erstellen via crontab

    sudo chmod 755 /home/pi/Backup.sh
    sudo mv /home/pi/fullBackup.sh /usr/local/bin/fullBackup.sh
    sudo crontab -e
    

    Backup jeden Tag um 03:00 Uhr morgens

    00 03 * * 0 /usr/local/bin/fullBackup.sh
    

    Zum Restore des Backups auf eine neue SD-Karte verwendet ihr unter Windows entweder Win32-Disk-Imager
    oder unter Linux/MacOS folgenden Befehl, sda muss entsprechend dem MountPoint der SD-Karte sein

    dd if=/pfad/.img of=/dev/sda bs=1MB
    

    Viel Erfolg bei der eigenen Backup-Strategie

[Mac OS X – Sierra] – Ruby/brew – bad interpreter error

nach Update auf Mac OS X Sierra

Fehlermeldung beim Aufruf von brew update

Mac:~ user$ brew update
/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: 
bad interpreter: No such file or directory
/usr/local/bin/brew: line 21: /usr/local/Library/brew.rb: Undefined error: 0

Fix:

cd /usr/local
git pull -q origin refs/heads/master:refs/remotes/origin/master
sudo chflags norestricted /usr/local && sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
brew update

Updated 1 tap (homebrew/core).
==> Updated Formulae
aws-sdk-cpp      awscli           flow             jemalloc         libmikmod        mikmod           node             teleport         terragrunt       unbound          wireguard-tools