{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreid5gucl2olk6dthtx2utcuig2444z5mnfwsxdqcrwy2zaunxdmqve",
    "uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmohfjkashl2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreiam35lnfnnwiuupk5s23vpnlkvdtzdxa5qtjwxotaiy6bpyblybru"
    },
    "mimeType": "image/png",
    "size": 632808
  },
  "description": "ZFS-Snapshots des Notebook-Pools auf eine USB-Platte schieben, die komplett mit geli verschluesselt ist. geli-Init mit AES-XTS-256, ZFS-Pool auf dem entschluesselten Geraet, ein knapper Backup-Workflow per zfs send und der Schluessel-Aufbewahrungs-Hinweis am Schluss.",
  "path": "/2015/05/23/freebsd-pc-bsd-backup-zfs-auf-usb-hdd/",
  "publishedAt": "2026-05-25T12:15:38.000Z",
  "site": "https://www.kernel-error.de",
  "tags": [
    "Encryption",
    "FreeBSD",
    "Hardening",
    "InfoSec",
    "SelfHosted",
    "Sysadmin",
    "ZFS",
    "Differenz zwischen zwei Snapshots übertragen",
    "Automatische ZFS-Snapshots",
    "ZFS send/recv Fehler beheben",
    "Einfach melden."
  ],
  "textContent": "Ein Notebook mit Full-Disk-Encryption verdient auch ein verschlüsseltes Backup. Plan: ZFS-Snapshots per `zfs send` auf eine USB-Platte schieben, die komplett mit `geli` verschlüsselt ist. Schlüssel und Passphrase sicher aufbewahren, fertig.\n\n**Hinweis:** Seit OpenZFS 2.0 (FreeBSD 13+) gibt es native ZFS-Verschlüsselung (`zfs create -o encryption=aes-256-gcm`). Damit entfällt geli als Zwischenschicht. Auf älteren Systemen oder wenn man die gesamte Platte unabhängig vom Dateisystem verschlüsseln will, bleibt geli die richtige Wahl.\n\n### USB-Platte verschlüsseln\n\nPlatte einstecken und per `dmesg` das Device identifizieren, in diesem Fall `da0`. Dann mit `gpart` eine neue GPT-Partitionstabelle anlegen und eine Partition erstellen.\n\ngeli braucht einen Schlüssel aus Zufallsdaten:\n\n\n    dd if=/dev/random of=./backup-key bs=256 count=1\n\nMit diesem Schlüssel die verschlüsselte Partition einrichten:\n\n\n    geli init -s 4096 -K ./backup-key -l 256 /dev/da0s1\n    Enter new passphrase:\n    Reenter new passphrase:\n\n    Metadata backup can be found in /var/backups/da0s1.eli and\n    can be restored with the following command:\n\n        # geli restore /var/backups/da0s1.eli /dev/da0s1\n\nPartition öffnen:\n\n\n    geli attach -k ./backup-key /dev/da0s1\n    Enter passphrase:\n\n### ZFS-Pool anlegen\n\nAuf der geöffneten geli-Partition (`da0s1.eli`) den ZFS-Pool erstellen:\n\n\n    zpool create usb-backup /dev/da0s1.eli\n\n    zpool list\n    NAME         SIZE  ALLOC   FREE  CAP  HEALTH\n    zroot        460G   184G   276G  40%  ONLINE\n    usb-backup   928G   296K   928G   0%  ONLINE\n\n### Backup starten\n\nInitiales Vollbackup per `zfs send -R` (rekursiv, alle Datasets und Snapshots):\n\n\n    zfs send -R zroot@auto-2015-05-23-21-00-00 | zfs recv -u usb-backup/notebook\n\nDie Option `-R` sendet alles rekursiv. Die Option `-u` beim Empfänger verhindert, dass die Datasets auf der USB-Platte gemountet werden. Bei allen folgenden Backups muss nur noch die Differenz zwischen zwei Snapshots übertragen werden.\n\n### Platte sicher aushängen\n\nDrei Schritte in der richtigen Reihenfolge:\n\n  * Sync erzwingen, alle Daten sicher auf die Platte schreiben\n  * ZFS-Pool exportieren\n  * geli-Partition schließen\n\n\n\n\n    sync\n    zpool export usb-backup\n    geli detach /dev/da0s1\n\n**Wichtig:** Den Schlüssel (`backup-key`) an einem dritten Ort aufbewahren, weder auf dem Notebook noch auf der Backup-Platte. Ohne Schlüssel und Passphrase sind die Daten nicht wiederherstellbar.\n\nMehr zu ZFS-Backups: Automatische ZFS-Snapshots und ZFS send/recv Fehler beheben. Fragen? Einfach melden.",
  "title": "FreeBSD: Verschlüsseltes ZFS-Backup auf USB-Platte mit geli"
}