Support >
  About independent server >
  A tool for monitoring data transfers in Linux
A tool for monitoring data transfers in Linux
Time : 2024-11-15 12:28:51
Edit : Jtti

Pipe Viewer (pv) A command line tool used in Linux to monitor the flow of data in a pipe. It can display the real-time progress of data in the transmission process of standard input to standard output. Here are some examples of how you can use the pv command to monitor the progress of copying, backing up, and compressing data.

pv can be used to monitor the progress of file replication. Suppose you want to copy a file file1 to file2, you can use pv to monitor the data flow during the copy process:

pv file1 | cp  file2

Alternatively, to copy the entire directory, you can use rsync and pv:

pv /path/to/source/directory | rsync a  /path/to/destination/directory

pv can also be combined with tar to monitor the progress of file backup. For example, use tar to back up files or directories, combined with pv to display progress:

pv /path/to/source/directory | tar czf  | ssh user@remote:/path/to/destination/directory

The preceding command displays the progress of the compressed backup from the local directory to the remote directory.

When compressing files, you can use pv to monitor the compression process:

pv file1 | gzip > file1.gz

Or use bzip2 for compression:

pv file1 | bzip2 > file1.bz2

When extracting files, you can also use pv to monitor the decompression process:

pv file1.gz | gunzip > file1

Or use bunzip2:

pv file1.bz2 | bunzip2 > file1

To calculate the compression ratio, first obtain the size of the original file and the compressed file:

original_size=$(stat --format="%s" file1)

compressed_size=$(stat --format="%s" file1.gz)

Re-calculate the compression ratio:

compression_ratio=$(echo "scale=2;  $original_size / $compressed_size" | bc -l)

echo "Compression ratio: $compression_ratio"

You can compress the file, monitor the compression progress and calculate the compression rate, and write a script to automate the whole process:

#! /bin/bash

# Compress files and monitor progress

pv "$1" | gzip > "${1}.gz"

# Get file size

original_size=$(stat --format="%s" "$1")

compressed_size=$(stat --format="%s" "${1}.gz")

# Calculate the compression ratio

compression_ratio=$(echo "scale=2;  $original_size / $compressed_size" | bc -l)

# Display compression ratio

echo "Compression ratio: $compression_ratio"

When using scripts, you simply need to pass the file name parameter to be compressed:

./compress_script.sh file1

pv provides a variety of options to customize the progress display. If the estimated remaining time is displayed:

pv e file1 | gzip > file1.gz

Or display the percentage processed:

pv p file1 | gzip > file1.gz

pv needs to receive data from the terminal, so it is best used for pipeline operations. If you encounter the error "could not ftell file descriptor" when using pv, it may be because you are trying to use pv for file descriptors that do not support random access. Make sure the command is passing standard input to the pv. pv is especially useful when working with large files or commands that take a long time to run, as it provides an intuitive way to monitor progress.

From these examples, it can be concluded that pv is a very useful tool to help you monitor and manage the progress of the data transfer process.

JTTI-Defl
JTTI-COCO
JTTI-Selina
JTTI-Ellis
JTTI-Eom