⚠️ 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_versiondiscriminator (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 → mtimeordering 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
AbortIncompleteMultipartUploadlifecycle 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 | shSee 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.