cp の進行に合わせて、ソース ディレクトリ内のファイル数とターゲット ディレクトリ内のファイル数を比較できると思いますか、それとも代わりにフォルダー サイズで比較できますか? 例を見つけようとしましたが、すべての bash プログレス バーは、単一のファイルをコピーするために書かれているようです。一連のファイル (または、前者が不可能な場合はディレクトリ) をコピーしたい。
11 に答える
次のようrsyncに代わりに使用することもできます。cp
rsync -Pa source destination
これにより、進行状況バーと完了の推定時間が表示されます。とても便利な。
ファイルとフォルダーとサブフォルダー (リンクとファイル属性を含む) の再帰コピーを実行中に進行状況バーを表示するには、次を使用できますgcp(「sudo apt-get install gcp」を実行することで、Ubuntu と Debian に簡単にインストールできます)。
gcp -rf SRC DEST
ファイルの大きなフォルダーをコピーするときの典型的な出力は次のとおりです。
Copying 1.33 GiB 73% |##################### | 230.19 M/s ETA: 00:00:07
操作全体で進行状況バーが 1 つだけ表示されることに注意してください。一方、ファイルごとに 1 つの進行状況バーが必要な場合は、次を使用できますrsync。
rsync -ah --progress SRC DEST
あなたはツールを見ているかもしれませんvcp。これは単純なコピー ツールで、現在のファイル用と全体用の 2 つの進行状況バーがあります。
編集
ソースへのリンクは次のとおりです: http://members.iinet.net.au/~lynx/vcp/マンページは次の 場所にあります: http://linux.die.net/man/1/vcp
ほとんどのディストリビューションには、そのためのパッケージがあります。
ここで別の解決策:ツールを使用してくださいbar
次のように呼び出すことができます。
#!/bin/bash
filesize=$(du -sb ${1} | awk '{ print $1 }')
tar -cf - -C ${1} ./ | bar --size ${filesize} | tar -xf - -C ${2}
tar を使いこなす必要があり、小さなファイルでは不正確になります。また、ターゲット ディレクトリが存在することに注意する必要があります。しかし、それは方法です。
元のソース ファイルを使用するため、私の推奨オプションはAdvanced Copyです。cp
$ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
$ tar xvJf coreutils-8.21.tar.xz
$ cd coreutils-8.21/
$ wget --no-check-certificate wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch
$ patch -p1 -i advcpmv-0.8-8.32.patch
$ ./configure
$ make
新しいプログラムは現在、src/cp および src/mv にあります。既存のコマンドを置き換えることを選択できます。
$ sudo cp src/cp /usr/local/bin/cp
$ sudo cp src/mv /usr/local/bin/mv
次にcp、通常どおり使用するか-g、進行状況バーを表示するように指定できます。
$ cp -g src dest
シンプルな UNIXの方法は、宛先ディレクトリに移動してwatch -n 5 du -s. バーとして表示することで、よりきれいにすることができます。これは、標準の UNIX ユーティリティしかなく、追加ファイルをインストールする範囲がない環境で役立ちます。du-sh が鍵です。watch は 5 秒ごとに実行するだけです。
長所: 任意の UNIX システムで 動作します短所: プログレス バーがありません
pvこれを正確に行うためのツールがあります: http://www.ivarch.com/programs/pv.shtml
aptにはubuntuバージョンがあります