ウェブサイト検索

アドバンスト コピー - Linux の cp および mv コマンドにプログレス バーを追加する


GNU cp ツールと GNU mv ツールは、GNU/Linux オペレーティング システムでファイルとディレクトリをコピーおよび移動するために使用されます。これら 2 つのユーティリティに欠けている機能の 1 つは、進行状況バーが表示されないことです。大きなファイルやディレクトリをコピーする場合、コピー プロセスが完了するまでにどれくらい時間がかかるか、またはコピーされるデータの割合はまったくわかりません。現在コピーされているファイルや、すでにコピーされたファイルの数は表示されません。表示されるのは、点滅するカーソルとハードドライブの LED インジケータだけです。 Gnu Coreutils のパッチである Advanced Copy のおかげで、cpmv進行状況バーを追加できるようになりました。 Linuxで コマンドを使用すると、大きなファイルやディレクトリをコピーまたは移動するときに進行状況バーが表示されます。

アドバンスト・コピーとは何ですか?

アドバンスト コピーは、GNU cp および GNU mv プログラム用の MOD です。進行状況バーが追加され、ファイルやフォルダーのコピーまたは移動中に何が起こっているかに関する情報が表示されます。プログレスバーだけでなく、データ転送速度、推定残り時間、現在コピー中のファイル名も表示されます。最後に、コピーされたファイルの数とファイルのコピーにかかった時間に関する短い概要が表示されます。

「Advanced Copy」パッチをインストールして Linux の cp および mv コマンドに進行状況バーを追加する

cp および mv コマンドは、GNU coreutils の一部です。したがって、ここから最新の GNU coreutils をダウンロードする必要があります。

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz

次のコマンドを使用して、ダウンロードしたアーカイブを解凍します。

tar xvJf coreutils-8.32.tar.xz

このコマンドは、現在のディレクトリの coreutils-8.32 という名前のフォルダーに coreutils アーカイブを抽出します。そこに CD を挿入します:

cd coreutils-8.32/

次のコマンドを使用して、アドバンスト・コピーのパッチをダウンロードします。

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch

最後に、次のコマンドを 1 つずつ実行してパッチを適用します。

patch -p1 -i advcpmv-0.8-8.32.patch
./configure
make

これで、2 つの新しいパッチ適用バイナリ cpmvcoreutils-8.32/src フォルダーに作成されます。以下のように ` PATH にコピーするだけです。

sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv

それでおしまい。 cp および mv コマンドにプログレス バー機能が追加されました。

ファイルやディレクトリのコピーまたは移動中に進行状況バーが必要な場合は、次のように -g フラグを追加するだけです。

cp -g archlinux.iso mydownload/

または、--progress-bar フラグを使用します。

cp --progress-bar archlinux.iso mydownload/

サンプル出力:

Copying at  25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso                                                          568.1 MiB / 646.0 MiB
[=========================================================================>                  ] 87.9 %

Linux の cp および mv コマンドに進行状況バーを追加する

コピー プロセスの最後に、コピーされたファイルの数、ファイルのコピーにかかった時間、および 1 秒あたりのデータ転送速度が表示されます。いいですね。

1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).

ディレクトリとそのサブディレクトリを再帰的にコピーするには、-R フラグを追加するだけです。

cp -gR directory1/ directory2/

同様に、mv コマンドを使用してファイルを移動するには、次のコマンドを実行します。

mv -g archlinux.iso mydownload/

または、--progress-bar フラグを使用します。

mv --progress-bar archlinux.iso mydownload/

mv コマンドでディレクトリを移動するには、次を使用します。

mv -g directory1/ directory2/

エイリアスを作成して、いくつかのキーストロークを節約することもできます。これを行うには、~/.bashrc ファイルを編集します。

nano ~/.bashrc

最後に次の行を追加します。

alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'

Ctrl+oCtl+x を押してファイルを保存して閉じます。

次に、次のコマンドを実行して変更を有効にします。

source ~/.bashrc

今後は、-g (または --progress-bar) を使用せずに、cp または mv コマンドを使用できるようになります。 ) フラグ。

元のプログラムは上書きされませんのでご注意ください。 /usr/bin/cp または /usr/bin/mv 経由でいつでも呼び出すことができます。

大量の大きなファイルやディレクトリを頻繁にコピーまたは移動する場合は、プログレス バー機能を cp および mv コマンドに追加することをお勧めします。画面を見つめる代わりに、ファイルのコピーや移動中に何が起こっているのかを正確に確認できるようになりました。

注:

オリジナルの作成者は、GNU CoreUtils を管理するチームにパッチを送信しました。 mv と cp は機能が完成しているため、このパッチはマージされません。

リソース:

  • アドバンスト コピー GitHub リポジトリ
  • インターネット アーカイブ上のアドバンスト コピー

関連記事:

  • gcp – Linux 用の高度なファイル コピー ユーティリティ
  • 「pv」コマンドを使用してパイプを介したデータの進行状況を監視する方法

関連記事