1. 概要

このチュートリアルでは、Linuxでコピーの進行状況と速度を表示する方法を学習します。

2. 単一ファイル

rsyncは、ローカルコピーだけでなくリモートコピーでも機能するファイルコピーツールです。 デフォルトで常にインストールされるわけではありませんが、人気のあるツールであり、標準のリポジトリからインストールできます。

rsyncを使用して、進行状況を表示しながら1つのファイルをコピーしましょう。 宛先は、ファイルまたはディレクトリにすることができます。

rsync --progress /path/to/source-file /path/to/destination
source-file
    264,601,600  25%  126.22MB/s    0:00:06

これまでにコピーされたバイト数、進行状況のパーセンテージ、速度、および残り時間が表示されます。

3. ディレクトリ

進行状況を表示しながら、rsyncを使用してディレクトリをコピーしましょう。

rsync -r --progress /path/to/source-dir /path/to/destination-dir
sending incremental file list
created directory /path/to/destination-dir
source-dir/
source-dir/1
    104,857,600 100%  261.70MB/s    0:00:00 (xfr#1, to-chk=8/10)
source-dir/2
    104,857,600 100%  102.46MB/s    0:00:00 (xfr#2, to-chk=7/10)
source-dir/3
    104,857,600 100%   58.11MB/s    0:00:01 (xfr#3, to-chk=6/10)
...

再帰コピーの場合、rsyncは各ファイルの進行状況情報を個別に表示することがわかります。 代わりに全体的な進捗状況を確認したい場合はどうなりますか?

別のオプションを使用して、全体的な進捗状況を確認しましょう。

rsync -r --info=progress2 /path/to/source-dir /path/to/destination-dir
    423,297,024  44%  134.64MB/s    0:00:03  (xfr#4, to-chk=5/10)

このコマンドは、source-dirdestination-dir内にコピーします。 コピーされたバイト数、全体的な完了率、合計転送速度、および残り時間を確認できます。 xfr#4 は、これまでに4つのファイルが転送されたことを意味します。 to-chk = 5/10 は、10個のファイルのうち5個がrsyncによってチェックされることを意味しますそれらが最新であるかどうかを確認します。

source-dirの最後にスラッシュを置くと、rsyncの動作が異なることに注意する必要があります。 これにより、 source-dir 自体ではなく、source-dirの内容がコピーされます。

rsync -r --info=progress2 /path/to/source-dir/ /path/to/destination-dir

4. その他の方法

URL転送ツールであるcurlを使用して、ファイルをローカルにコピーすることは考えられないかもしれません。 可能ですが、一度に1つのファイルのみです。

curl -o /path/to/destination-file file:///path/to/source-file
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 17 1000M   17  173M    0     0   518M      0  0:00:01 --:--:--  0:00:01  518M

progressを使用してみましょう。これは、 cp mv dd などのすでに実行されている基本コマンドの進行状況を表示するツールです。 ]tarまたはgzip

progress -M
[ 2498] cp /path/to/source-file
        80.7% (806.9 MiB / 1000 MiB) 245.0 MiB/s

最後に、 lsof を試してみましょう。これは、すでに進行中のコピーに関する情報を取得するためにも使用できます。 watchを使用して変更を監視できます。

watch lsof /path/to/destination
COMMAND  PID USER   FD   TYPE DEVICE  SIZE/OFF   NODE NAME
cp      2197 root    4w   REG    8,2 650133504 539646 /path/to/destination

5. 結論

このクイック記事では、Linuxでファイルとディレクトリをコピーする際の進行状況を確認する方法を学びました。