Skip to content

v3.0.0

@gekap gekap tagged this 09 Apr 16:05
Major release with automatic destination filesystem detection,
explicit hash algorithm selection, and honest dedup accounting
on link-incapable filesystems. Two HIGH-severity correctness
bugs found during real-world Synology NAS testing are fixed.

New features:
- Automatic FS detection: ext4/btrfs/XFS/APFS/NTFS/FAT32/...
  with capability probing (hardlink/symlink/reflink) shown
  in the banner alongside the Dedup line
- --hash=auto|xxh128|sha256 flag: users can force a specific
  algorithm; choice is visible in the banner
- -v / --verbose flag for full FS detection details
- Honest dedup accounting on FAT32: reports "Bandwidth saved"
  separately from "Disk usage"; Phase 3 space check uses full
  undeduplicated size
- File-path destination for single-file copies across all
  four copy modes (L2L, R2L, L2R, R2R)
- Improved Phase 6 duplicate-handling summary with per-type
  breakdown (hardlinks / symlinks / full copies)

Bug fixes:
- Synology NAS: tar -T /dev/stdin failed via paramiko; switched
  to tar -T - which works universally (GNU tar, BSD tar, busybox)
- Stale manifest silent data loss: filter_unchanged_remote
  trusted manifest for existence. Now always scans the remote
  and uses the manifest only as a hash cache
- Windows verify crash on \\.\nul device paths
- FAT32 Phase 3 space check underreported required size

Security:
- fs_detect hardening: 128-bit probe-dir entropy, symlink-safe
  make/cleanup, null-byte rejection, FICLONE arch allowlist,
  mountinfo escape decoding
- 16 live MITM tests (host key change, TOFU, no env bypass,
  SSL CERT_REQUIRED)
- 21 pentest scenarios (symlink, traversal, DoS, manifest)

Internals:
- fs_detect module inlined into fast_copy.py as a clearly
  marked section; fs_detect.py kept as a 44-line shim so
  existing tests work unchanged
- 289 automated tests across 8 test files, all passing
Assets 2
Loading