Monitor and control data flowing through pipelines with a simple progress-aware pipe utility. 24.06.2026 | reading time: 2 min See how much data has passed through a pipeline and how fast it moves: pv inserts a progress indicator into any stream so the user can watch, limit and label data flowing between commands. Create an archive with progress Make a tarball while watching progress and a live ETA using pv; for example run the command and observe the on-screen meter: ```bash tar cf - ~/projects/myapp | pv -s 4G | gzip > myapp.tar.gz # sample pv output (written to stderr): # 3.1GiB 0:01:25 [36.7MiB/s] [=====> ] 78% ``` Copy files and show throughput Copy a single large file and display rate and elapsed time with a direct pv invocation; this does not alter the data stream because pv writes its progress to stderr: ```bash pv ~/downloads/ubuntu.iso > /media/usb/ubuntu.iso # sample pv output: # 1.8GiB 0:02:14 [14.2MiB/s] [==> ] 25% ``` Throttle transfers and set sizes Control and describe streams: use `-L` to limit transfer rate, `-s` to tell pv the expected total so the percentage and ETA are accurate, `-q` to suppress output and `-N` to label the stream; a common compact option set is `-pterb` to show progress, timer, ETA, transfer rate and bytes. Integrate with common tools Wrap dd, rsync-friendly pipelines, tar and compression tools with pv to get live feedback: the utility is especially handy during backups, long copies or when combining compression with archiving so the user knows when a long job will finish. Try it in your workflow Add pv to scripts and ad-hoc commands to make long transfers visible and controllable; learn more about Linux tooling and consider certification like CompTIA Linux+ or LPIC-1, and for focused exam preparation check bitsandbytes.academy. Join Bits & Bytes Academy First class LINUX exam preparation. utilities backup storage scripting filesystem