Advanced copy commands like cp on Linux and macOS do not show a progress bar by default, but you can add one using tools like rsync, pv, or progress. This article explains how to display real-time progress for large file transfers, what each tool does, and how to choose the right one for your workflow.
Formula
The calculator above works out the average transfer speed and the estimated time remaining for a copy operation. Enter the total time elapsed (in seconds) and the amount of data copied (in gigabytes). The speed is calculated as:
Speed (MB/s) = (Data in GB × 1024) / Time in seconds
The estimated time remaining (in minutes) is simply the total time divided by 60. This is a rough estimate—real transfer speeds fluctuate based on disk I/O, network latency, and file sizes.
Worked Example
Suppose you have copied 10 GB in 3600 seconds (1 hour). Using the formula:
- Data in MB = 10 × 1024 = 10240 MB
- Speed = 10240 / 3600 = 2.84 MB/s
- ETA = 3600 / 60 = 60 minutes
The calculator shows an average speed of 2.84 MB/s and an ETA of 60 minutes. Note that this is the average over the whole transfer, not the instantaneous speed.
Why Standard cp Doesn’t Show Progress
The standard cp command on Linux and macOS is intentionally minimal. It copies files without any visual feedback, which is fine for small files but frustrating when copying multi-gigabyte directories. The reason is historical: cp was designed in the early Unix era when terminals were slow and output was expensive. Modern alternatives like rsync and pv were built with progress reporting in mind.
Using rsync for Progress
rsync is the most common tool for showing progress during copies. It’s available by default on most Linux distributions and macOS. The basic syntax is:
rsync -ah --progress source/ destination/
-a– archive mode (preserves permissions, timestamps, etc.)-h– human-readable sizes (e.g., 1.2G instead of 1234567890)--progress– shows a per-file progress bar and a summary at the end
For a cleaner output that shows only a single line per file, add --info=progress2 to see the overall progress across all files.
Using pv (Pipe Viewer)
pv is a separate utility that monitors data flowing through a pipe. It’s perfect for copying a single large file with a progress bar and speed estimate. Install it with your package manager (e.g., apt install pv on Debian/Ubuntu, brew install pv on macOS). Then use:
pv source.iso > destination.iso
This shows a progress bar, percentage, transfer speed, and ETA. You can also use pv with dd for disk cloning:
dd if=/dev/sda | pv | dd of=/dev/sdb
Using the progress Command
The progress tool (formerly coreutils progress) is different—it attaches to an already running cp, mv, or dd process and shows its progress. It’s useful when you forgot to add a progress flag. Run it in a second terminal while your copy is running:
progress
It will list all monitored processes with a progress bar and percentage. Install it via apt install progress or brew install progress.
Choosing the Right Tool
- rsync – best for directory copies, network transfers, and when you want to resume interrupted copies.
- pv – best for a single file or when you want to pipe data between commands.
- progress – best when you already started a copy and want to monitor it without restarting.
Common Problems and Misconceptions
“rsync is slower than cp” – Not necessarily. rsync does more work (checksumming, metadata), but for large transfers it’s often faster because it can resume and compress data. For local copies, the overhead is negligible.
“Progress bar freezes” – If the bar seems stuck, it’s usually because the file is large and the update interval is long. rsync updates every second by default, but you can adjust with --progress and --info=progress2.
“mv doesn’t support progress” – The mv command on Linux does not have a built-in progress option. You can use rsync --remove-source-files to move with progress, or use progress to monitor an existing mv.
Frequently Asked Questions
Can I get a progress bar with cp on Windows?
Windows’ copy and xcopy don’t show progress, but robocopy does. Use robocopy source destination /MT for multithreaded copy with a progress display.
Does rsync work on macOS?
Yes, macOS ships with rsync (though an older version). You can install a newer one via Homebrew with brew install rsync.
How do I see speed in MB/s with rsync?
Add --stats to see average speed at the end, or use --info=progress2 to see live speed. The output includes a line like 1.2G 100% 45.6MB/s.
Why does pv show a different speed than rsync?
pv measures raw data flowing through the pipe, while rsync may compress data on the fly (if you use -z) or skip unchanged files. So the speeds can differ. For raw copies, pv is more accurate.
Can I pause and resume a copy with progress?
rsync supports resuming with --partial (keep partially transferred files). pv does not have a resume feature—it’s a one-shot pipe. For resumable copies, rsync is the better choice.
Is there a way to show progress in a GUI file manager?
Most desktop file managers (Nautilus, Dolphin, Finder) already show progress bars. If you’re using a terminal, the tools above are the standard solution.
Limitations and Tips
Progress bars are estimates. They can be inaccurate when copying many small files (overhead dominates) or over a network (latency and congestion). For very large transfers, consider using rsync --partial --progress so you can resume if interrupted. Always double-check that the destination has enough space—a progress bar won’t warn you until the disk is full.
Related
Formula used
in t | Total time (s) | s | 3600 | 0 | 86400 in d | Data copied (GB) | GB | 10 | 0 | 10000 out speed | Average speed (MB/s) | MB/s | (d * 1024) / t | 2 out eta | Estimated time remaining (min) | min | t / 60 | 2
Each line is one input (in, sel, list) or one result (out: label, unit, formula, decimals). How the calculators work
Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.
More cards in this drawer
- Campus Tech Innovation Hubs: What They Are
- Poco C51 Airtel Prepaid Locked Variant India?
- Jenkins vs GitHub Actions: Which CI/CD Fits Your Team?
- Turn Off Backup Encryption in iTunes?
- Shared VPS Hosting: Is It Better?
- Disk Defrag Pro: What It Does and Whether You Need It