# Rollback

## 1 | Snapshots anzeigen

Ein *Snapshot* ist eine schreibgeschützte Momentaufnahme Ihres Dateisystems.   
Liste aller vorhandenen Snapshots anzeigen:

```bash
zfs list -t snapshot
```

Beispielausgabe (mit ausgedachten Namen &amp; Größen):

```bash
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
poolalpha/data@2025-07-14_06-04-31   248M      -   1.3T  -
poolalpha/data@2025-07-16_00-39-41   253M      -   1.4T  -
tank/media@2025-07-02_23-13-47        25G      -    13T  -
tank/media@2025-07-16_00-39-40        1T      -    19T  -
```

---

## 2 | Rollback (zu einem Snapshot zurückkehren)

1. Kopieren Sie den vollständigen Snapshot-Namen aus der Liste (`pool/dataset@datum_uhrzeit`).
2. Führen Sie den Rollback-Befehl aus:  
    ```bash
    zfs rollback poolalpha/data@2025-07-14_06-04-31
    ```
3. **Tipp für Fortgeschrittene:**  
    Mit `-r` (*recursive*) werden automatisch alle neueren Snapshots entfernt, bevor der Rollback ausgeführt wird.  
    ```bash
    zfs rollback -r poolalpha/data@2025-07-14_06-04-31
    ```

---

## 3 | Snapshot manuell erstellen (heutiges Datum)

Einfach im Terminal einen Einzeiler eingeben:

```bash
# Zeitstempel-Variable im Format YYYY-MM-DD_HH-MM-SS
TS=$(date +"%Y-%m-%d_%H-%M-%S")

# Snapshot für ein einzelnes Dataset
zfs snapshot poolalpha/data@$TS

# Rekursiv für einen gesamten Dataset-Baum
zfs snapshot -r tank@$TS

```

- 💾 Snapshots belegen nur den Platz für geänderte Datenblöcke.

---

## 4 | Häufige Fragen &amp; praktische Tipps

<details id="bkmrk-was-passiert-beim-ro"><summary>Was passiert beim Rollback mit meinen neueren Daten ?</summary>

Alle Blöcke, die *nach* dem gewählten Snapshot erzeugt wurden, gehen verloren. Sichern Sie daher wichtige Dateien zuerst oder testen den Snapshot mit einem **Clone**:

```bash
zfs clone poolalpha/data@2025-07-14_06-04-31 poolalpha/data-test
```

</details><details id="bkmrk-kann-ich-einen-snaps"><summary>Kann ich einen Snapshot gegen Löschen schützen ?</summary>

Ja – mit einem sogenannten *Hold*:

```bash
zfs hold keep poolalpha/data@2025-07-14_06-04-31
# Aufheben:
zfs release keep poolalpha/data@2025-07-14_06-04-31
```

</details><details id="bkmrk-wie-schiebe-ich-eine"><summary>Wie schiebe ich einen Snapshot auf einen Backup-Server ?</summary>

```bash
zfs send -vP poolalpha/data@$TS | \
ssh backuphost zfs recv -uF backuppool/data
```

</details>