Releases: chicohaager/zima-backup
Release list
v0.3.1
Fixed
- The result line of a job (overview and history) was always an English
sentence built by the server, whatever the UI language. Results now
carry their numbers as adetailobject, and the UI writes the sentence
in its own language with the language's number format (German:
„Sicherungspunkt 921bd3e2: 18.342 Dateien, 23 neu, 0 geändert, 96,4 MiB
hinzugefügt“).messagestays English for notifications, logs and
history written before this change; those entries show it as before. - Sizes in the restore dialog read „MiB 4.6“:
direction: rtl, meant to cut
long paths from the left in the folder picker, applied to every size
column. It now applies to paths only.
Changed
- The system backup's texts no longer call the box "Zima" in German, French, Spanish and Chinese ("die Zima selbst", "diese Zima"): the cards and dialogs now say "your whole ZimaOS setup" / "this system", as the English text already did with "this box".
Install / upgrade
Download zbackup-amd64.raw (or zbackup-arm64.raw), copy it to the host as zbackup.raw and run
sudo zpkg remove zbackup && sudo zpkg install /tmp/zbackup.raw — jobs, secrets and history under /DATA/AppData/zbackup are kept.
zbackup.raw is the amd64 image under the name zpkg expects. The arm64 image is built by CI but has not been run on arm64 hardware yet.
Full Changelog: v0.3.0...v0.3.1
Full Changelog: v0.3.0...v0.3.1
v0.3.0
v0.2.1
v0.2.0
v0.1.1 — Sync & Backup
Install
Download zbackup-amd64.raw or zbackup-arm64.raw, copy it to the host as zbackup.raw and run sudo zpkg install /tmp/zbackup.raw. Upgrading from 0.1.0: sudo zpkg remove zbackup first; jobs, history and keys in /DATA/AppData/zbackup are kept.
Fixed
- A cancelled backup left restic's lock file in the repository, and restic
never removes it by itself: every later run reported completed but
its retention pass failed with "repository is already locked", so
snapshots were never pruned, and Check repository failed. The module
now runsrestic unlockbefore backup, restore and check; it only
removes locks whose process is gone or that are older than 30 minutes,
so a job running on the same repository is left alone. - The release asset
zbackup.raw.sha256namedzbackup-amd64.raw, so
sha256sum -ccould not verify the download.
Full Changelog: v0.1.0...v0.1.1
Full Changelog: v0.1.0...v0.1.1
v0.1.0 — Sync & Backup
Install
Download zbackup-amd64.raw or zbackup-arm64.raw, copy it to the host as zbackup.raw (zpkg matches the file name against the extension name) and run sudo zpkg install /tmp/zbackup.raw. The module then appears at /v2/zbackup in the ZimaOS shell.
First release. A ZimaOS module (systemd-sysext) that backs up and mirrors
folders on the Zima itself — the built-in Backup tile covers phones.
Backup (restic 0.19.1, bundled)
- Encrypted, versioned snapshots per job; several jobs may share one
repository (snapshots are tagged with the job id). - Retention: keep last / daily / weekly / monthly, pruned after each run.
- Browse any snapshot, restore single files or folders to the original
place or elsewhere, check the repository. - Targets: local folder or USB disk, the cloud drives ZimaOS Files is
signed in to (restic's rclone backend against ZimaOS' own remote
configuration), another ZimaOS/Linux box over SSH, SFTP server,
Windows/SMB share, S3-compatible storage. - Wrong passphrase, locked repository and an unreachable target are
reported by name, never as a stack trace.
Sync (rsync / rclone from the ZimaOS base image)
- One-way mirror of folders to a local disk, over SSH (rsync), or to
SFTP/SMB/S3 (rclone). Each source lands as<target>/<folder name>. - "Mirror deletions" is off by default; the preview (dry run) shows what
a run would copy and delete before anything happens. - exFAT/FAT disks: ownership and permissions are not synced there (the
filesystem cannot keep them), so every run succeeds instead of ending
with rsync's exit 23.
Module
- Drives: mounted volumes (system disk, pools, USB disks by label or
model, cloud drives by provider) are listed with free space in the
target step and as the folder picker's top level. - Find on the network: ZimaOS boxes on the LAN and ZeroTier (mDNS
_zimaos._tcp) and online Tailscale peers can be picked as the target
host instead of typed. - Three-step wizard (what · where · when), job cards with live progress
and the current phase (creating the repository — counted folder by
folder on slow drives —, backing up, pruning, restoring, checking,
copying) with transfer rate, bytes moved and time left, a Log window with the tool's output of the current or last
run, history, restore browser, sync preview, Telegram and webhook
notifications (generic, n8n, Discord, Slack, Home Assistant, Uptime Kuma). - English, German, French, Chinese — follows the ZimaOS shell language.
- ZFW design tokens, light and dark, no webfont.
- Session authentication against the ZimaOS gateway keys (ES256 JWT);
the UI renews an expired session itself. - Boot watchdog and refresh path unit so the module survives the
systemd-sysext race on ZimaOS 1.7. - Secrets (passphrases, target passwords) live in
keys/<job>.json
(mode 600) and never appear injobs.jsonor an API response.
Known limits
- ZimaNet peers are not listed (ZimaNet has no local peer API); Tailscale
peers appear only when Tailscale runs as a sysext, not from the
App-Store container. - Cloud drives are reached directly, never through the folder ZimaOS
mounts under/media(refused as a target:cloud_mount). Google
Drive charges a round trip per file: the first backup of a large
folder runs at about 0.35 MB/s, a sync of many small files at roughly
one file per six seconds; later runs only send changes. - A job whose target hangs (a FUSE mount that stops answering) stays
"running" until the mount answers; cancel cannot interrupt a process
stuck in the kernel, and a module upgrade started meanwhile waits for
it too (measured:zpkg removehung until the stuck restic returned). - vfat and NTFS disks were not measured; the exFAT handling covers the
chown/permission case they share.
Full Changelog: https://github.com/chicohaager/zima-backup/commits/v0.1.0