Skip to content

v0.3.0 — symlink support

Choose a tag to compare

@phaus phaus released this 12 Nov 09:59
b0dc723

Symlinks are now backed up, matching kopia's dir-manifest format: entries of type "s" whose object holds the link target string — dangling links included.

Changes since v0.2.0

  • Symlink support: readlink → target uploaded as file object, lstat size/mode/mtime. Dynamic target buffer (sized from lstat st_size, retry if the link changes) — no truncation.
  • Special files (FIFOs/sockets/devices): still skipped (kopia does the same), but now logged with path and counted in the run summary.
  • Directory summary fixes: summary.dirs self-count per kopia convention; symlinks counter added to dir summaries and rootEntry.summ.
  • Bug fix: symlink mtime via lstat — previously a dangling symlink produced an empty mtime and broke kopia-side JSON parsing of the dir object.
  • Test: tests/symlink-roundtrip.sh — scripted end-to-end test vs a local kopia server (valid/absolute/dangling/relative/dir/2000-char/UTF-8-dir symlinks, empty + multi-chunk files, FIFO-skip assertion, full restore check).

Verification

  • Round-trip test vs kopia 0.23.1: Restored 5 files, 5 directories and 7 symbolic links — all targets byte-exact
  • Full-tree run against the production server from a PowerPC G4 (Mac mini, 10.5.8)
  • User-Agent: kopia-darwin-ppc/0.3

Binaries

  • kopia-darwin-ppc — Mach-O ppc_7400, Mac OS X 10.4/10.5 G4/G5 (32-bit)
  • kopia-darwin-ppc64 — Mach-O ppc64, G5 (untested — no hardware)

SHA-256 in SHA256SUMS.