1

If I run

cp file1 file2

I'd like to be able to track it's progress. Is there a command I can use for this?

rsync --progress

has this, but is there something generic, usable for "any" command?

Felipe Alvarez
  • 2,054
  • 3
  • 27
  • 37

3 Answers3

6

You can use pv to see the progress of any command that can transfer data through pipes.

See e.g. http://www.catonmat.net/blog/unix-utilities-pipe-viewer/ for explanations. This will not work for cp however, as it does not operate via pipes.

Beyond that, there's no general mechanism I am aware of. It would be difficult, since "progress" can mean different things to different commands.

BTW, cp has an option -v which lists files as they are copied, that can give you a rough idea of its progress.

Edit:

Though it might not directly answer your question: You can also just use a graphical file manager. Most provide a nice progress bar when copying / moving files (e.g. KDE's konqueror does).

sleske
  • 22,652
  • 10
  • 69
  • 93
1

try append --verbose to commmands you are interested in, this will generally produce more infomation on progress.

overboming
  • 337
  • 4
  • 9
0

(Perhaps not quite what you're asking since it won't work for any command, but) to get a progress meter for cp, I sometimes (ab)use scp:

scp localhost:/path/to/source_file /path/to/destination

You will need the "localhost:" prefix on either the source or destination so scp won't fall back to a standard cp.

Shawn Chin
  • 1,184
  • 7
  • 18
  • While this will work, it might be less efficient because you incur additional overhead for the network-transfer (even though it only uses the `localhost` pseudo-network-interface). However, as long as the copy is IO-bound, this will probably not matter. – sleske Sep 22 '11 at 08:07
  • At any rate, OP already uses `rsync --progress` for seeing progress during a copy operation. – sleske Aug 19 '14 at 07:39