Skip to content

dcp is a distributed file copy program that automatically distributes and dynamically balances work equally across nodes in a large distributed system without centralized state.



Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A tool to copy file(s) in parallel on a distributed system.


dcp [cCdfhpRrUv] [--] source_file target_file
dcp [cCdfhpRrUv] [--] source_file ... target_directory


dcp is a file copy tool in the spirit of cp(1) that evenly distributes work across a large cluster without any centralized state. It is designed for copying files which are located on a distributed parallel file system. The method used in the file copy process is a self-stabilization algorithm which enables per-node autonomous processing and a token passing scheme to detect termination.


An MPI environment is required (such as Open MPI's mpirun(1)) as well as the self-stabilization library known as LibCircle.


-c, --conditional

When copying a source directory to a destination directory, copy the source directory over the destination directory. The default behavior is to copy the source directory inside the destination directory.

-C, --skip-compare

Skip the compare operation to confirm file integrity. When using this option, a file integrity check, such as md5sum, should be performed after the file(s) have been copied.

-d , --debug=level

Specify the level of debug information to output. Level may be one of: fatal, err, warn, info, or dbg. Increasingly verbose debug levels include the output of less verbose debug levels.

-f, --force

Remove existing destination files if creation or truncation fails. If the destination filesystem is specified to be unreliable (-U, --unreliable-filesystem), this option may lower performance since each failure will cause the entire file to be invalidated and copied again.

-h, --help

Print a brief message listing the dcp(1) options and usage.

-p, --preserve

Preserve the original files' owner, group, permissions (including the setuid and setgid bits), time of last modification and time of last access. In case duplication of owner or group fails, the setuid and setgid bits are cleared.

-R, --recursive

Copy directories recursively, and do the right thing when objects other than ordinary files or directories are encountered.

-r, --recursive-unspecified

Copy directories recursively, and ignore objects other than ordinary files or directories.

-U, --unreliable-filesystem

If the filesystem is very unreliable, this option may be used to always retry an operation when a failure occurs. If failures are permanent, this option will cause an infinite loop. Specifying this option when force is enabled (-f, --force) may lower performance.

-v, --version

Print version information and exit.

Known bugs

When the force option is specified and truncation fails, the copy and truncation will be stuck in an infinite loop until the truncation operation returns with success.

The maximum supported filename length for any file transfered is approximately 4068 characters. This may be less than the number of characters that your operating system supports.

RPM Creation

First, check the Build Status. If all tests are passing, create an rpm using the following instructions:

  1. rpmbuild -ta dcp-<version>.tar.gz
  2. rpm --install <the appropriate RPM files>


Please view the file for more information on how to contribute to dcp.


See the included COPYING file for additional information.


dcp is a distributed file copy program that automatically distributes and dynamically balances work equally across nodes in a large distributed system without centralized state.







No packages published