Skip to content

Releases: chicohaager/zima-backup

v0.3.1

Choose a tag to compare

@chicohaager chicohaager released this 02 Oct 11:39

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 a detail object, 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“). message stays 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

Choose a tag to compare

@github-actions github-actions released this 23 Sep 15:33

Full Changelog: v0.2.1...v0.3.0

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 21 Sep 10:09

Full Changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 08:21

Full Changelog: v0.1.1...v0.2.0

v0.1.1 — Sync & Backup

Choose a tag to compare

@github-actions github-actions released this 19 Sep 06:04

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 runs restic unlock before 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.sha256 named zbackup-amd64.raw, so
    sha256sum -c could 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

Choose a tag to compare

@github-actions github-actions released this 19 Sep 05:22

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 in jobs.json or 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 remove hung 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