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