Changes for version 0.001.2 - 2026-10-24

  • Bug Fixes
    • filesync-admin repo create names the server root and the directory that blocks it when the root cannot be written, and says to chown it to the running account or use --root elsewhere. It used to report only "Permission denied" against a path below the root.
    • That advice is given only when a directory really is unwritable, so a full disk or a root that is a file keeps its own error.
  • Documentation
    • The examples are split by machine - what to run on the server, on each client, and from cron - and keep the master in a home directory, so nothing needs sudo.
    • What a /srv/filesync root needs instead, the wrapper that adds --root to filesync-server, and the ssh key the first sync requires.
    • The backup and restore commands follow the example's master layout, and make the backup directory before cron mirrors into it.
    • The synopsis creates the repo first, so it runs as printed.

Documentation

keep a directory in step with a master copy
administer a filesync server root
serve one sync session (the forced command in authorized_keys)

Modules

cron-driven file synchronisation without a daemon
server-side repo, client and recovery administration
validated arguments for App::FileSync's public routines
shared i18n behaviour for App::FileSync objects
the filesync, filesync-admin and filesync-server commands
sync one repo, and the client-side repo commands
client and repo configuration files
shared constants for App::FileSync
rsync-style block deltas in pure Perl
message catalogue and error raising for App::FileSync
the English message catalogue
filesystem primitives for App::FileSync
.gitignore-style path exclusion
advisory lock files
three-way merge of base, client and master manifests
choose platform workarounds before other modules load
the line-delimited JSON wire protocol
describe a directory tree as a manifest
serve one sync session against a repo's master
process-wide settings and logging for App::FileSync
daily snapshots of a replica
the server-side files of one repo
run the server as a local child process
run the server over ssh
dated trash with retention
check a tree against its recorded manifest