# Raspberry Pi OS  - Verkleinern einer Backup Imagedatei

<p class="callout info">Hier wird beschrieben wie eine Imagedatei, welche nach der Anleitung [Raspberry Pi OS - Backup / Restore](https://funktioniert.org/books/raspberry-pi-os/page/raspberry-pi-os-backup-restore) erstellt wurde, verkleinert werden kann. </p>

<p class="callout warning">Zum Verkleinern der Partition wird **gparted** verwendet, falls es noch nicht installiert ist:</p>

```bash
apt install gparted 
```

Mit **fdisk** die Partitionen der Imagedatei auflisten:

```bash
fdisk -l rpios.img
```

```shell
Disk rpios.img: 29.72 GiB, 31914983424 bytes, 62333952 sectors
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: 0xdacc6ddd

Device         Boot   Start      End  Sectors  Size Id Type
rpios.img1            16384  1064959  1048576  512M  c W95 FAT32 (LBA)
rpios.img2          1064960 62333951 61268992 29.2G 83 Linux
```

<p class="callout info">Notieren des Startsektors der 2. Partition (1064960)</p>

Mit **losetup** ein Loopdevice mit dem Inhalt der 2. Partition der Imagedatei erstellen, als offset wird der Startpunkt (Startsektor\*512) der 2. Partition angegeben:

```bash
losetup /dev/loop99 rpios.img -o $((1064960*512))
```

Mit **gparted** die Partition verkleinern:

```bash
gparted /dev/loop99
```

Verkleinern auf Minimum plus etwas Reserve (~100MB)

<p class="callout info">Notieren der neuen Größe aus dem Infofenster (z.B. 3788800K)</p>

Das Loopdevice wieder löschen:

```bash
losetup -d /dev/loop99
```

Mit **losetup** ein Loopdevice aus der Imagedatei erstellen:

```bash
losetup /dev/loop99 rpios.img
```

Mit **fdisk** die 2. Partition löschen und mit der neuen Größe wieder erstellen:

```bash
fdisk /dev/loop99
```

- Mit d 2 die 2. partition löschen
- Mit n p 2 eine neue 2.Partition anlegen
- Start der 2. Partition 1064960 angeben
- Bei neuer Größe +3788800K angeben
- Mit w in Tabelle schreiben
- Mit q beenden

Mit **fdisk** die Partitionen auflisten:

```bash
fdisk -l /dev/loop99
```

<p class="callout info">Notieren des Endsektors der 2. Partition (z.B. 8642559)</p>

Das Loopdevice wieder löschen:

```bash
losetup -d /dev/loop99
```

Verkleinern der Imagedatei mit **truncate** auf die Größe (Endsektor\*512):

```bash
truncate -s $(((8642559+1)*512)) rpios.img
```

Überprüfen des Ergebnisses mit **fdisk**:

```bash
fdisk -l rpios.img
```