Skip to content

TimeTraveller v1.5.0

Choose a tag to compare

@amplogik amplogik released this 08 Jul 17:14
· 9 commits to main since this release

Post-restore hardening — integrity, recovery, and restore-from-anywhere. Motivated by a real bootloader recovery and forensics showing 2 isolated bit-flipped frames in 17,732 on a home full (a non-ECC single-event-upset signature).

Integrity: verify-after-write (D1)

With verify_after_write (default on), each shard re-reads itself from the backup store immediately after writing — cache-dropped, so it checks what actually landed, not the client buffer — inside its own writer thread so the read overlaps sibling-shard writes (near-free in wall-clock). A frame that fails its checksum marks the shard corrupt, records the affected files, keeps the archive browsable, skips retention (preserving the redundancy heal needs), and exits with a --heal hint. Catches post-write corruption (e.g. non-ECC bit flips) the same night instead of years later at restore.

Recovery: heal-from-redundancy (D2)

--heal <backup> finds files damaged by frame corruption and restores a clean copy of each from another cycle that still holds one; unrecoverable files are reported. The GUI gains a corrupt badge + Recover damaged files (heal)… action.

Portable restore-from-anywhere

  • A small timetraveller.restore.json descriptor (plan identity + original source roots) travels beside each manifest, backfilled on --refresh-from-mount.
  • A self-contained timetraveller-restore.sh recovers on a machine with no TimeTraveller installed (needs only bash, python3, tar, zstd).
  • New Restore from location… in the GUI: browse to a backup on a USB drive, external disk, or network share and restore directly, with no matching plan config. Extract to the original location (behind an overwrite warning) or a staging directory.

Install / upgrade

sudo apt install ./timetraveller_1.5.0_all.deb