Provided by: fpart_1.6.0-1_amd64 bug

NAME

       fpsync — Synchronize directories in parallel using fpart and an external tool

SYNOPSIS

       fpsync  [-p]  [-n  jobs]  [-w  wrks]  [-m  tool]  [-T  path]  [-f  files]  [-s  size]  [-E] [-o toolopts]
              [-O fpartopts] [-S] [-t tmpdir] [-d shdir] [-M mailaddr] [-v] src_dir/ dst_url/
       fpsync -l
       fpsync -r runid [-R] [OPTIONS...]
       fpsync -a runid
       fpsync -D runid

DESCRIPTION

       The fpsync tool synchronizes directories in parallel using fpart(1) and rsync(1), cpio(1) or tar(1).   It
       computes subsets of src_dir/ and spawns jobs to synchronize them to dst_url/.

       Synchronization  jobs  can  be executed either locally or remotely (using SSH workers, see option -w) and
       are executed on-the-fly while filesystem crawling goes on.  This makes fpsync a good tool  for  migrating
       large filesystems.

COMMON OPTIONS

       -t tmpdir
               Set  fpsync  temporary directory to tmpdir.  This directory remains local and does not need to be
               shared amongst SSH workers when using the -w option.  Default: /tmp/fpsync

       -d shdir
               Set fpsync shared directory to shdir.  This option is mandatory when using SSH workers and set by
               default to tmpdir when running locally.  The specified directory must be an absolute  path  ;  it
               will be used to handle communications with SSH hosts (sharing partitions and log files) and, as a
               consequence,  must  be  made available to all participating hosts (e.g. through a r/w NFS mount),
               including the master one running fpsync.

       -M mailaddr
               Send an e-mail to mailaddr after a run.  Multiple -space-separated- addresses can  be  specified.
               That option requires the mail(1) client to be installed and configured on the master host running
               fpsync.

       -v      Verbose mode.  Can be be specified several times to increase verbosity level.

       -h      Print help

SYNCHRONIZATION OPTIONS

       -m tool
               External  copy  tool used to synchronize files.  Currently supported tools are: rsync, cpio, tar,
               and tarify.  Default: rsync.  When using  cpio  or  tar  and  more  than  one  worker,  directory
               timestamps  may  not  be replicated.  A second pass will fix them.  Special tool tarify generates
               tarballs into destination directory.

       -T path
               Specify absolute path of copy tool (guessed by default).  If you force a specific path, the  copy
               tool  must  be  present at that path on each worker.  That path cannot be changed when resuming a
               run.

       -f files
               Transfer at most files files or directories per sync job.  0 means  unlimited  but  you  must  at
               least specify one file or size limit.  Default: 2000

       -s size
               Transfer  at  most  size bytes per sync job.  0 means unlimited but you must at least specify one
               file or size limit.  You can use a human-friendly unit suffix here (k, m, g, t, p).
               Default: 4294967296 (4 GB)

       -E      Work on a per-directory basis (rsync tool only).  In  that  mode,  fpsync  works  with  lists  of
               directories  instead  of files.  That mode may generate coarse-grained lists but enables rsync(1)
               's --delete option by default ( WARNING!!!  ), making it a good candidate for a final  (cleaning)
               pass  after  several  incremental passes using standard (file) mode.  When option -E is specified
               twice, it enables 'aggressive' mode which isolates erroneous directories  and  enables  recursive
               synchronization  for them.  This advanced mode can be useful to try to overcome transcient errors
               such as Linux SMB client deferring opendir() calls to support compound SMB requests.

       -o toolopts
               Override default rsync(1), cpio(1) or tar(1) options with toolopts.  Use this option with care as
               certain options are incompatible with a parallel usage  (e.g.  rsync's  --delete).   Default  for
               rsync: “-lptgoD -v --numeric-ids”.  Empty for cpio, tar and tarify.

       -O fpartopts
               Override default fpart(1) options with fpartopts.  Options and values must be separated by a pipe
               character.
               Default: “-x|.zfs|-x|.snapshot*|-x|.ckpt”.

       -S      Sudo mode.  Use sudo(8) for filesystem crawling and synchronizations.

       src_dir/
               Source  directory.   It  must be absolute and available on all participating hosts (including the
               master one, running fpsync).

       dst_url/
               Destination directory or URL (rsync tool only).   If  a  remote  URL  is  provided,  it  must  be
               supported by rsync(1).  All participating workers must be able to reach that target.

JOB HANDLING AND DISPATCHING OPTIONS

       -n jobs
               Start jobs concurrent sync jobs (either locally or remotely, see below) per run.  Default: 2

       -w wrks
               Use  remote  SSH  wrks to synchronize files.  Synchronization jobs are executed locally when this
               option is not set.  wrks is a space-separated list of login@machine connection strings and can be
               specified several times.  You must be allowed to connect to those machines using  a  SSH  key  to
               avoid user interaction.

RUN HANDLING OPTIONS

       -p      Prepare mode: prepare, test synchronization environment, start fpart(1) and create partitions but
               do  not actually start transfers.  That mode can be used to create a run that can then be resumed
               using option -r.

       -l      List previous runs and their status.

       -r runid
               Resume run runid and restart synchronizing remaining partitions from a previous  run.   runid  is
               displayed  when  using  verbose  mode  (see  option  -v)  or  prepare mode (option -p) and can be
               retrieved afterwards using option -l.  Note that filesystem crawling is skipped when  resuming  a
               previous  run.   As a consequence, options -m, -f, -s, -E, -o, -O, -S, src_dir/, and dst_url/ are
               ignored.

       -R      Replay mode: when using option  -r,  force  re-synchronizing  run's  all  partitions  instead  of
               remaining ones only.  That mode can be useful to skip filesystem crawling when you have to replay
               a  final pass several times and you know directory structure has not changed in the meantime (you
               may miss files if you use replay mode with a standard, file-based, run).

       -a runid
               Archive run runid (including partition files, logs, queue and work directories) to tmpdir.   That
               option requires the tar(1) client to be installed on the master host running fpsync.

       -D runid
               Delete run runid (including partition files, logs, queue and work directories).

RUNNING FPSYNC

       Each  fpsync  run generates a unique runid, which is displayed in verbose mode (see option -v) and within
       log files.  You can use that runid to resume a previous run (see option -r).  fpsync  will  then  restart
       synchronizing data from the parts that were being synchronized at the time it stopped.

       This  unique  feature  gives  the  administrator the ability to stop fpsync and restart it later, without
       having to restart the whole filesystem crawling and synchronization process.  Note that resuming is  only
       possible when filesystem crawling step has finished.

       During  synchronization,  you  can  press CTRL-C to interrupt the process.  The first CTRL-C prevents new
       synchronizations from being submitted and the process  will  wait  for  current  synchronizations  to  be
       finished  before  exiting.  If you press CTRL-C again, current synchronizations will be killed and fpsync
       will exit immediately.  When using option -E to enable directory mode and rsync's --delete  option,  keep
       in  mind  that  killing rsync processes may lead to a situation where certain files have been updated and
       others not deleted yet (because the deletion process is postponed using rsync's --delete-after option).

       On certain systems, CTRL-T can be pressed to get  the  status  of  current  and  remaining  parts  to  be
       synchronized.  This can also be achieved by sending a SIGINFO to the fpsync process.

       Whether you use verbose mode or not, everything is logged within shdir/log/.

EXAMPLES

       Here are some examples:

       fpsync -n 4 /usr/src/ /var/src/

               Synchronizes /usr/src/ to /var/src/ using 4 local jobs.

       fpsync -n 2 -w login@machine1 -w login@machine2 -d /mnt/fpsync /mnt/src/ /mnt/dst/

               Synchronizes  /mnt/src/  to  /mnt/dst/ using 2 concurrent jobs executed remotely on 2 SSH workers
               (machine1 and machine2).  The shared directory is set to /mnt/fpsync and mounted on  the  machine
               running  fpsync,  as  well as on machine1 and machine2.  The source directory (/mnt/src/) is also
               available on those 3 machines, while the destination directory  (/mnt/dst/)  is  mounted  on  SSH
               workers only (machine1 and machine2).

LIMITATIONS

       Parallelizing  rsync(1)  can make several options not usable, such as --delete.  If your source directory
       is live while fpsync is running, you will have to delete extra files from destination directory.  This is
       traditionally done by using a final -offline- rsync(1) pass that will use this option, but you  can  also
       use fpsync and option -E to perform the same task using several workers.

       fpsync enqueues synchronization jobs on disk, within the tmpdir/queue directory.  Be careful to host this
       queue on a filesystem that can handle fine-grained mtime timestamps (i.e. with a sub-second precision) if
       you want the queue to be processed in order when fpart(1) generates several jobs per second.  On FreeBSD,
       VFS(9)   timestamps'   precision   can   be   tuned  using  the  'vfs.timestamp_precision'  sysctl.   See
       vfs_timestamp(9).

       Contrary to rsync(1), fpsync enforces the final '/' on the source directory.   It  means  that  directory
       contents  are  synchronized, not the source directory itself (i.e. you will not get a subdirectory of the
       name of the source directory in the target directory after synchronization).

       Before starting filesystem crawling, fpsync  changes  its  current  working  directory  to  src_dir/  and
       generates  partitions  containing  relative paths (all starting with './').  This is important to keep in
       mind when modifying toolopts or fpartopts dealing with file or directory paths.

       If you want to run fpsync in the background, your shell must support enabling job control without  a  tty
       in  non-interactive mode.  As of this writing, Dash does not support that feature and will send a SIGTTIN
       to the whole process group, suspending fpsync execution.

SEE ALSO

       cpio(1), fpart(1), mail(1), rsync(1), tar(1), sudo(8)

AUTHOR, AVAILABILITY

       Fpsync  has  been  written  by  Ganaël  LAPLANCHE  and  is   available   under   the   BSD   license   on
       http://contribs.martymac.org

BUGS

       No bug known (yet).

Debian                                          January 27, 2015                                       FPSYNC(1)