97 lines
3.4 KiB
Markdown
97 lines
3.4 KiB
Markdown
# Paperless-ngx-Backup von TrueNAS auf macOS
|
|
|
|
Das Script ist fuer die auf `bfds` erkannte Installation vorbereitet:
|
|
|
|
- TrueNAS 25.04.2.6
|
|
- TrueNAS-App `paperless-ngx` 1.6.37
|
|
- Paperless-ngx 3.0.2
|
|
- Container `ix-paperless-ngx-paperless-1`
|
|
|
|
Es pflegt einen dauerhaften Paperless-Export und synchronisiert ihn ungezippt
|
|
auf den Mac. Nach dem ersten vollstaendigen Lauf werden nur neue, geaenderte
|
|
oder geloeschte Dateien abgeglichen. Es entstehen keine Archive und keine
|
|
taeglichen Vollkopien.
|
|
|
|
Der lokale Stand befindet sich hier:
|
|
|
|
```text
|
|
~/Backups/paperless-ngx/current/
|
|
├── backup-info.txt
|
|
├── paperless-export/
|
|
│ ├── manifest.json
|
|
│ ├── metadata.json
|
|
│ ├── archive/
|
|
│ ├── originals/
|
|
│ └── thumbnails/
|
|
└── truenas-app-config/
|
|
```
|
|
|
|
`paperless-export` enthaelt Dokumente, Thumbnails, Metadaten, Benutzer und die
|
|
exportierten Datenbankinhalte. `truenas-app-config` enthaelt zusaetzlich die
|
|
TrueNAS-App-Einstellungen und die Konfiguration frueherer App-Versionen.
|
|
|
|
## Testen und ausfuehren
|
|
|
|
```bash
|
|
./backup-paperless-ngx.sh --check
|
|
./backup-paperless-ngx.sh
|
|
```
|
|
|
|
`--check` prueft SSH, Container und Mounts. Ausserdem wird ein kleiner
|
|
temporaerer `document_exporter --data-only`-Lauf ausgefuehrt und dessen
|
|
Manifest kontrolliert. Der Testexport wird sofort wieder entfernt.
|
|
|
|
Alle Werte lassen sich ueber `~/.config/paperless-backup/config` aendern;
|
|
siehe `config.example`. Voraussetzung ist, dass
|
|
`ssh -o BatchMode=yes bfds true` ohne Passwortdialog funktioniert.
|
|
|
|
## Taeglich um 03:00 Uhr ausfuehren
|
|
|
|
```bash
|
|
./install-launchagent.sh
|
|
```
|
|
|
|
Der Installer kopiert das Script nach
|
|
`~/Library/Application Support/PaperlessBackup`, legt bei Bedarf die
|
|
Konfiguration an und registriert einen LaunchAgent. Ein manueller Lauf des
|
|
installierten Jobs ist mit folgendem Befehl moeglich:
|
|
|
|
```bash
|
|
launchctl kickstart -k gui/$(id -u)/de.rob.paperless-ngx-backup
|
|
```
|
|
|
|
Logs stehen in `~/Library/Logs/paperless-ngx-backup.log` sowie in den beiden
|
|
`paperless-ngx-launchd.*.log`-Dateien.
|
|
|
|
## Wiederherstellung
|
|
|
|
1. Eine frische Paperless-Instanz mit derselben Paperless-Version wie in
|
|
`backup-info.txt` bereitstellen.
|
|
2. Den Inhalt von `current/paperless-export` in das Export-Volume der neuen
|
|
Instanz kopieren und dort `document_importer` ausfuehren.
|
|
3. `current/truenas-app-config` dient als Referenz fuer Ports, Storage,
|
|
Umgebungswerte und Secrets. Diese Dateien nicht blind in eine laufende
|
|
TrueNAS-App zurueckkopieren.
|
|
|
|
Der Paperless-Exporter sichert keine API-Tokens; sie muessen nach einem Import
|
|
neu erzeugt werden.
|
|
|
|
## Verhalten und Sicherheit
|
|
|
|
Das ist ein Spiegel des aktuellen Paperless-Stands. Wird ein Dokument in
|
|
Paperless geloescht, wird es beim naechsten erfolgreichen Lauf auch aus diesem
|
|
Export entfernt. Fuer historische Staende sollte der Ordner zusaetzlich durch
|
|
Time Machine oder ein anderes versionierendes Backup gesichert werden.
|
|
|
|
Der Export enthaelt alle Dokumente und moegliche Klartext-Secrets aus der
|
|
TrueNAS-App-Konfiguration. Das uebergeordnete Zielverzeichnis ist nur fuer den
|
|
aktuellen macOS-Benutzer zugaenglich. FileVault sollte aktiviert sein.
|
|
|
|
Auf dem TrueNAS-Apps-Pool bleibt ebenfalls ein ungezipptes Exportverzeichnis
|
|
`macos-backup-current` bestehen. Es wird von Paperless bei jedem Lauf
|
|
inkrementell aktualisiert.
|
|
|
|
Bereits mit einer aelteren Scriptversion erzeugte `.tar.gz`-Archive werden
|
|
nicht automatisch geloescht. Sie koennen nach erfolgreicher Kontrolle des
|
|
neuen `current`-Ordners manuell entfernt werden.
|