Install

Install on the server and on every client. The server runs filesync-admin and filesync-server; the clients run filesync. One installation provides all three programs.

From CPAN

cpanm App::FileSync

Or with the traditional client:

perl -MCPAN -e 'install App::FileSync'

From source

tar xzf App-FileSync-0.002.0.tar.gz
cd App-FileSync-0.002.0
perl Makefile.PL
make
make test
make install

make install may need root, or a PERL_MM_OPT/ local::lib prefix. If you install into a per-user directory, remember that cron's PATH rarely includes it: name the full path in the crontab, as the quick start does.

Requirements

Perl 5.14 or later. Most of what the distribution uses ships with Perl; the non-core prerequisites are:

ModuleMinimumWhy
Config::Abstraction0.41explain_sources(), used by filesync settings
Log::Abstraction0.36structured fields in the run log
Params::Validate::Strict0.41argument validation at public entry points
Params::Get0.17named and positional argument handling
Object::Configure—layered process settings
Readonly2.05constants
Sub::Private0.07private methods in enforce mode
Sub::Protected0.03protected methods in the base class
IPC::System::Simple1.30running ssh
Compress::Raw::Zlib—deflating data frames
Digest::SHA—content hashes and transfer verification
JSON::PP—configuration, manifests and the wire protocol
autodie2.37file operations
List::Util1.54list helpers
version0.77dotted version objects

The rest — Carp, Cwd, Exporter, Fcntl, File::Basename, File::Copy, File::Path, File::Spec, File::Temp, FindBin, Getopt::Long, IO::Handle, IPC::Open3, Scalar::Util, Sys::Hostname, Time::HiRes and Time::Local — ships with Perl.

The two version minimums are deliberate. Config::Abstraction 0.41 added explain_sources(), and Log::Abstraction 0.36 added the structured fields the client writes its run summary with. An older copy of either used to satisfy the installer and then misbehave at run time, so both are now declared.

Platforms

Check the installation

filesync version
perldoc App::FileSync

filesync version prints the release. If the command is not found, the installation directory is not on PATH; use the full path, or add it to the PATH the scheduler sees.

Upgrading

Install the newer release the same way. The client configuration, the server's repo metadata and the on-disk index are read as they are; unknown keys are kept and ignored. Peers speak the line-delimited JSON protocol, so upgrade the server before, or together with, the clients.

Trash written by releases before 0.001.1 sits in one shared directory. filesync restore still searches it, so files trashed before an upgrade can still be recovered.