Skip to content


Subversion checkout URL

You can clone with
Download ZIP
C Shell
branch: master
Failed to load latest commit information.
arch-linux almost a rewrite
gentoo almost a rewrite
obj restructured directories, updated Makefile
src refactored main application logic, improved multithreading approach
.travis.yml added Travis CI
LICENSE added proper license information
Makefile fixed linker call flags

vcp - verbose cp

Build Status


vcp is intended to be a (limited) replacement for cp, providing additional features like visual progress information and error handling.


vcp is designed to be called similar to cp:

$ vcp /foo/file1 /bar/directory2 /path/to/destination

(Note: in contrast to standard cp, you don't need to supply -r for copying directories.)

For a complete list of switches and options please see the help text (vcp -h).


Advantages compared to cp (the cool stuff):

  • Progress Information
    Progress bars or textual information like transfer state, speed and ETA.
  • Error Handling
    A failed file will not interrupt the whole process, it will be skipped and reported at the end.
  • Smart Argument Parsing
    No need to think of recursion ('cp -r'), folders will automatically be copied together with their contents.
  • Preponed Crawling
    All source items are crawled before transfer is started, allowing user prompt for overwriting or skipping.
    (no coming back after two hours and seeing a dumb overwriting confirmation prompt which caused the whole transfer to stop just a few seconds after you left the room... ;) )

vcp currently supports regular files, directories and symlinks. Other types, e.g. block devices or sockets are not supported and yield errors.


Back in 2009, after switching from Gentoo to Arch I started missing progress information for cp/mv, which Gentoo had provided via a patch for coreutils. As I used to copy large files around on a very weak PIII box, this annoyed me so hard that I decided to write a simple replacement.

vcp was my very first piece of C code, and one can see this at some lines ;)
I'll try to give this ancient project some new love in form of code style improvements and proper abstraction if I find some time.

The goal of vcp is NOT to provide a full replacement for cp or mv. It shall only be a simple tool for common file transfer operations, providing the aforementioned additional features.


Feel free to send suggestions for improvements or bug reports using the issues function on GitHub.


This program is published under the terms of the GNU General Public License, version 3. See the file LICENSE for more information.

Something went wrong with that request. Please try again.