Raspberry Pi Backups verkleinern

Ich habe schon einmal in einem Video gezeigt, wie du ein Backup deiner SD-Karte anfertigen kannst, falls die mal den Geist aufgeben sollte.
Die dort angelegten Backups, sind aber immer so groß, wie die Gesamtgröße des Speichermediums.
Wer also eine 64GB SD-Karte oder 256GB SSD nutzt, hat am ende eben ein 64GB oder 256GB großes Backup.
Das Problem: Man kann das Backup nur auf einem gleich großen oder größeren Speichermedium wiederherstellen und die Backups verbrauchen mit der Zeit einiges an Platz auf dem Backupspeicher.

Wie bekommen wir also unsere Backups kleiner?
Mit PiShrink!

PiShrink ist ein kleines Script, welches den nicht genutzt Speicher im Backup löscht.
Ist also z.B. bei deiner 64GB Speicherkarte nur rund 2GB belegt, werden die restlichen 62GB gelöscht.
Am Ende haben wir ein 2GB großes Image, welches wir auch z.B. auf eine 8GB SD-Karte wiederherstellen können.
Nett, oder?

Hinweis: Die Anleitung klappt auch für alle anderen Ein-Platienencomputer und Backups im .img-Format! Es ist also nicht nur für den Raspberry Pi.

Wie geht das ganze und was brauchen wir?
Wir brauchen unseren Raspberry Pi und genügend Speicherplatz.

1. Logge dich auf deinem Pi per SSH ein
2. Lade dir PiShrink herunter

# wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

3. Mache PiShrink ausführbar:

# sudo chmod +x pishrink.sh

4. Schiebe die Datei nun in folgenden Ordner:

# sudo mv pishrink.sh /usr/local/bin

So können wir PiShrink nun bequem überall im System aufrufen.
5. Schließe nun das Speichermedium an den Pi an, auf dem dein Backup liegt oder mounte einen Netzwerkspeicher → Hautpsache wir kommen an die Datei 😉
6. Navigiere dich nun zum Speicherort deines Images

# cd /pfad/zu/deinem/image/

7. Setze folgenden Befehl ab:

# sudo pishrink.sh Image_Name.img

Ersetze Image_Name durch den Namen deiner Datei.

PiShrink wird nun die Datei direkt bearbeiten. Er legt keine zweite Datei an, sondern editiert direkt das Original.
Du brauchst also nicht mehr Speicherplatz 😉

Tipp: Wenn der Prozess länger dauern sollte, führe ihn einfach per Screen aus. So kannst du es in Ruhe weiter laufen lassen und die SSH-Sitzung solange beenden.

# sudo screen -S PiShrink pishrink.sh Image_Name.img

(Screen muss auf dem System installiert sein!)

PiShrink hat noch weitere Parameter zur Verfügung, die wir mit pishrink.sh aufrufen können:

[email protected]:~# pishrink.sh
pishrink.sh v0.1.2
Usage: /usr/local/bin/pishrink.sh [-adhrspvzZ] imagefile.img [newimagefile.img]

  -s         Don't expand filesystem when image is booted the first time
  -v         Be verbose
  -r         Use advanced filesystem repair option if the normal one fails
  -z         Compress image after shrinking with gzip
  -Z         Compress image after shrinking with xz
  -a         Compress image in parallel using multiple cores
  -p         Remove logs, apt archives, dhcp leases and ssh hostkeys
  -d         Write debug messages in a debug log file

Fertig!
Wir haben nun ein kleineres Image!

Das Raspberry Pi OS und (in der Regel) alle Debian-Systeme, sollten beim ersten Start des frisch geflashtem Image auch das Dateisystem wieder korrigieren.
Solltest du dein Backup auf ein größeres oder kleineres Speichermedium wiederherstellen, wird beim ersten Start das Laufwerk eingelesen und der verfügbare Speicherplatz angepasst.

Hinweis: Ein Raspberry Pi startet z.B. 2x neu, sobald die neue SD-Karte gestartet wird, da er die Partitionsgrößen anpasst! Hab also einen Moment Geduld beim Starten.

2 Kommentare

  1. Hallo Hoerli,

    vielen Dank für das Hilfreiche Tutorail.
    Bei mir läuft es das Scrip leider nicht durch. Bin neu auf dem Gebiet und kann mit der Meldung nicht so wirklich was anfangen.
    Hast du eventuell eine Idee wodran es liegen könnte?
    Hier die Meldung
    :/mnt/nas $ sudo pishrink.sh Pi_Bcakup-20210119-131912.img
    pishrink.sh v0.1.2
    pishrink.sh: Gathering data …
    Error: Error opening /mnt/nas/Pi_Bcakup-20210119-131912.img: Veraltete Dateizugriffsnummer (file handle)
    pishrink.sh: ERROR occured in line 273: parted failed with rc 1
    pishrink.sh: Possibly invalid image. Run ‚parted Pi_Bcakup-20210119-131912.img unit B print‘ manually to investigate …

    Und hier liegt auch die Datei
    :/mnt/nas $ ls
    Fotografie_Spiecker.png Pi_Bcakup-20210119-131912.img test

    Gruß aus dem Norden
    Björn

    • Hallo Björn!
      Ist vielleicht das Backup defekt?
      Ich habe das Script mehrfach mal mit diversen Pi’s probiert und bisher hats super funktioniert.
      Den Fehler – zumindest die Angabe „Veraltete Dateizugriffsnummer“ – kenn ich aus anderen Scripts, wenn Festplatten via SMB übers Netzwerk gemountet werden.
      Dann ist die Chance das es läuft, bei 50%.
      Falls das so ist (was ich an dem Mountpfad „nas“ womöglich ablegen kann) versuch doch mal falles es möglich ist, eine USB-Festplatte direkt an den Pi zu stecken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Durch das Absenden dieses Kommentars werden deine angegebenen Daten auf dem Server gespeichert. Du stimmst dadurch den Datenschutzbedingungen zu.