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?
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).
try append --verbose
to commmands you are interested in, this will generally produce more infomation on progress.
(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.
localhost
pseudo-network-interface). However, as long as the copy is IO-bound, this will probably not matter.
rsync --progress
for seeing progress during a copy operation.