Abschließend mache ich noch ein Backup von der SD-Karte...

Backup des Octoprint Systems

Vorbereitungen

Um Platz zu sparen, werden unnötige Dateien entfernt:

# Octoprint Dienste stoppen
sudo systemctl stop octoprint
sudo su - octoprint /home/octoprint/scripts/webcam stop

# System aktualisieren und runtergeladene Pakete löschen
sudo apt update && sudo apt upgrade && sudo apt clean

# Swap File löschen (2GB)
sudo dphys-swapfile swapoff && sudo rm /var/swap 

# Log Dateien entfernen
sudo rm /var/log/*.log
sudo rm /home/octoprint/.octoprint/logs/*
sudo rm /home/octoprint/.bash_history
sudo rm /root/.bash_history

Sicherung der SD-Karte

Als nächstes erstellt man ein Image von der SD-Karte. Dies kann entweder auf einem anderen Linux Rechner gemacht werden, oder man schickt den Inhalt der Karte direkt auf einen zweiten Linux Rechner:

dd if=/dev/mmcblk0 | gzip -1 - | ssh svenpaass@zweiter-linux-rechner "dd of=~/2018-07-25-octoprint.img.gz"

Image anpassen (Linux-Partition verkleinern, automatischen Resize aktivieren)

Damit man das Image auf eine andere SD-Karte, die evtl. kleiner ist zurückspielen kann, wird die Linux-Partition soweit verkleinert, das nur etwas mehr als der belegte Platz im engültigen Image vorhanden ist. Damit man die volle Kartengröße nach dem ersten Start verwenden kann, wird das Skript zur Partitionsvergrößerung wieder hinzugefügt.

gunzip -d -c ~/2018-07-25-octoprint.img.gz > ~/2018-07-25-octoprint.img
sudo kpartx -av ~/2018-07-25-octoprint.img
sudo mount /dev/mapper/loop0p2 /mnt
sudo mount /dev/mapper/loop0p1 /mnt/boot
  • /mnt/boot/cmdline erweitern:
rootwait quiet init=/usr/lib/raspi-config/init_resize.sh

Das Filesystem-Resize Skript runterladen und in das Image einfügen (qemu-arm-static wird benötigt wegen chroot):

sudo wget -qO /mnt/etc/init.d/resize2fs_once https://raw.githubusercontent.com/smarkets/chef-raspberry-pi/master/files/default/resize2fs_once
sudo chmod +x /mnt/etc/init.d/resize2fs_once
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin
sudo chroot /mnt systemctl enable resize2fs_once
sudo rm /mnt/usr/bin/qemu-arm-static

Löschen von unnötigen Dateien:

sudo rm /mnt/home/*/.bash_history
sudo rm /mnt/root/.bash_history
sudo rm -rf /mnt/var/tmp/* /mnt/tmp/*
sudo rm -rf /mnt/boot.bak /mnt/debootstrap

sudo rm /mnt/var/log/* /mnt/var/log/apt/* /mnt/var/log/samba/*
sudo rm /mnt/var/backups/*

sudo umount /mnt/boot
sudo umount /mnt

sudo fsck.vfat -f /dev/mapper/loop0p1
sudo fsck.ext4 -f /dev/mapper/loop0p2

Verkleinern der Linux Partition (aktuell belegte Größe + ca. 300MB)

sudo resize2fs /dev/mapper/loop0p2 4G

The filesystem on /dev/mapper/loop0p2 is now 1048576 (4k) blocks long.

sudo kpartx -d ~/2018-07-25-octoprint.img
sudo losetup /dev/loop0 ~/2018-07-25-octoprint.img
sudo fdisk /dev/loop0

Löschen der zweiten partition und neu anlegen mit den selben werten. Bei Endgröße 4194304k eingeben (1048576*4).

Beispiel:

Vorher:
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x735e7eec

Device       Boot Start      End  Sectors  Size Id Type
/dev/loop0p1       8192    96663    88472 43.2M  c W95 FAT32 (LBA)
/dev/loop0p2      98304 63272959 63174656 30.1G 83 Linux

Nachher:
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x735e7eec

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1       8192   96663   88472 43.2M  c W95 FAT32 (LBA)
/dev/loop0p2      98304 8486911 8388608    4G 83 Linux

Danach das Image verkleinern:

sudo losetup -d /dev/loop0
truncate --size=$[(8388608+1)*512] ~/2018-07-25-octoprint.img
gzip -9 ~/2018-07-25-octoprint.img

Nächster Beitrag Vorheriger Beitrag