The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


dirsync - Syncronize two directories rapidly

$Id: dirsync,v 1.15 2007/08/04 07:33:29 rob Exp $


  # Rebuild the source cache for rapid updating.
  dirsync  [ options ]  --rebuild  <source_dir>

  # Quickly update source to destination.
  dirsync  [ options ]  <source_dir> <dest_dir>


  # Mirror source to destination ignoring cache.
  # (almost like: cp -a <source_dir>/. <dest_dir>/.
  #  except files may be deleted in destination
  #  to ensure exact consistency with source.)
  dirsync  [ options ]  --nocache <source_dir> <dest_dir>


This is just a wrapper script for easy commandline access to File::DirSync. It mirrors all files and symlinks recursively from source_dir to dest_dir.


--help (or -h)

Show this help screen

--rebuild (or -r)

Rebuilds the dirsync cache on source_dir. Write access to source_dir is required to rebuild. If dest_dir is not specified when this option is, then nothing is mirrored to anywhere after the cache is rebuilt.

--local (or -l)

Local directory only, no recursion.

--nocache (or -n)

When mirroring from source_dir to dest_dir, do not assume that --rebuild has built the dirsync cache on source_dir already. It is ignored and all files are mirrored. This option will significantly slow the performance of the mirroring process.

--ignore <dir> (or -i=<dir>)

Avoid recursing into directories named <dir> within the entire descent of source_dir. This option applies to both the --rebuild option and the mirroring process if a second directory is supplied. It may be specified multiple times to ignore several directories.

--only <node> (or -o=<node>)

If this option is used, this will be the only node checked for changes, but the cache will still be rebuilt all the way to source_dir. This only node must always be a subdirectory or a file within a subdirectory of source_dir. This option only applies to the --rebuild option. It may be specified multiple times to rebuild several nodes.

--skew (or -s)

Enable clock skew protection. If a file or directory is found within source_dir modified in the future, the timestamp will be reset back to "now" to prevent corrupting the directory cache into the future.

--concur <lockfile> (or -c=<lockfile>)

If this option is used, <lockfile> will be used to ensure that only one dirsync process is running at a time. If another process is concurrently running, this process will immediately abort without doing anything. If <lockfile> does not exist, it will be created.

--gentle <percent>[:<ops>] (or -g=<percent>:<ops>)

If this option is specified, then dirsync will spend <percent> % of the time sleeping instead of syncing. If <ops> is specified, it will perform <ops> disk operations in between each pause cycle. If this option is not specified, dirsync will burn continually until the process has completed.

--proctitle (or -p)

If this option is specified, the process name will be modified to show the current operation. This can be useful for viewing or monitoring the progress.

--verbose (or -v)

Show extra details.


Rob Brown,


Copyright (C) 2001-2006, Rob Brown,

All rights reserved.

This may be copied, modified, and distributed under the same terms as Perl itself.


cp(1), perl(1)