github borgbase/vykar v0.17.0

7 hours ago

⚠️ Breaking Changes — Coordinated Upgrade Required

This release stamps snapshots with format version 1 to support non-UTF8 path fidelity. Compatibility is backward-readable but not forward-compatible:

  • New 0.17.0 binaries read all existing repositories and older snapshots.
  • Older binaries cannot read snapshots written by 0.17.0 — they fail cleanly with a decode error, not silent corruption.

If multiple machines share a repository, upgrade them all at the same time. An older binary restoring a snapshot written by 0.17.0 is the direction that is not supported. Existing repositories and old snapshots remain fully readable by this release.

Features

  • Hard links: regular files with multiple links are now preserved across backup and restore. Each member records its source (dev, ino); restore regroups members and relinks them, with the relink path hardened against malformed-snapshot attacks (authoritative chunk-id fingerprint, parent-containment checks, O_EXCL creation).
  • Non-UTF8 paths: filenames and symlink targets that are not valid UTF-8 are now preserved byte-faithfully through backup and restore on Unix. Snapshots additively gain a format_version discriminator (see Breaking Changes).
  • Restore metadata: restore now applies uid/gid (when run as root), directory mtimes, and symlink mtimes, with a uniform chown → xattrs → chmod → mtime ordering so restored caps/setuid and read-only modes survive.
  • S3 multipart upload: packs larger than 16 MiB upload via the S3 multipart API, so a connection reset mid-transfer costs one 16 MiB part instead of restarting the whole pack. Each part is retried independently. We recommend an AbortIncompleteMultipartUpload lifecycle rule (#154).
  • Special files: FIFOs, sockets, and device nodes that vykar cannot represent now emit a per-entry warning instead of being dropped silently. Warn-only — the backup still succeeds.
  • GUI: notifies you with a clickable "(update)" link when a newer release is available.

Bug Fixes

  • Restore durability: restored files are now fsynced (data + inode) before rename, and the destination directory is fsynced after — closing a window where a crash could leave correct-sized files with unflushed contents.
  • Restore retry: a killed restore no longer leaves a temp dir that blocks the next attempt; reserved temp dirs are swept safely on the following run.

Documentation

  • Corrected crash-orphan reclamation guidance (vykar check --repair) in the architecture and maintenance docs, with a regression test.

Updating

To update to the latest version, run:

curl -fsSL https://vykar.borgbase.com/install.sh | sh

See the quickstart guide for other install options.

Downloads

Platform Artifact
Linux x86_64 (gnu) vykar-v0.17.0-x86_64-unknown-linux-gnu.tar.gz
Linux x86_64 (musl) vykar-v0.17.0-x86_64-unknown-linux-musl.tar.gz
Linux aarch64 (gnu) vykar-v0.17.0-aarch64-unknown-linux-gnu.tar.gz
Linux aarch64 (musl) vykar-v0.17.0-aarch64-unknown-linux-musl.tar.gz
macOS aarch64 vykar-v0.17.0-aarch64-apple-darwin.tar.gz
Windows x86_64 vykar-v0.17.0-x86_64-pc-windows-msvc.zip
GUI (AppImage) vykar-gui-v0.17.0-x86_64.AppImage

SHA256 checksums are attached to this release.

Don't miss a new vykar release

NewReleases is sending notifications on new releases.