Cpが進行するにつれて、ソースディレクトリ内のファイルの数をターゲットディレクトリ内のファイルの数と比較できると思いますか、または代わりにフォルダサイズでそれを行うことができますか?私は例を見つけようとしましたが、すべてのbashプログレスバーは単一のファイルをコピーするために書かれているようです。大量のファイル(または前者が不可能な場合はディレクトリ)をコピーしたい。
次のように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つの進行状況バーを備えた単純なコピーツールです。1つは現在のファイル用、もう1つは全体用です。
[〜#〜] edit [〜#〜]
ここにソースへのリンクがあります: 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を経由する必要があり、小さなファイルでは不正確になります。また、ターゲットディレクトリが存在することに注意する必要があります。しかし、それは方法です。
simple unix方法は、宛先ディレクトリに移動してwatch -n 5 du -s
。おそらく、バーとして表示することで、それをより美しくします。これは、標準のUNIXユーティリティだけがあり、追加のファイルをインストールする範囲がない環境で役立ちます。 du-shが鍵であり、監視は5秒ごとに行うことです。 長所:任意のUNIXシステムで動作します短所:プログレスバーなし
私の優先オプションは、元のcp
ソースファイルを使用するため、 Advanced Copy です。
$ 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 https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch
$ patch -p1 -i advcpmv-0.5-8.21.patch
$ ./configure
$ make
新しいプログラムは現在、src/cpおよびsrc/mvにあります。既存のコマンドを置き換えることを選択できます。
$ Sudo cp src/cp /usr/local/bin/cp
$ Sudo cp src/mv /usr/local/bin/mv
別のオプションを追加するには、cpv
を使用できます。 pv
を使用して、cp
の使用を模倣します。
pv
のように機能しますが、これを使用して再帰的にディレクトリをコピーできます
あなたはそれを得ることができます ここ
これを正確に行うツールpv
があります。 http://www.ivarch.com/programs/pv.shtml
AptにはUbuntuのバージョンがあります
のようなものはどうですか
find . -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /DEST/$(dirname {})
現在のディレクトリ内のすべてのファイルを検索し、PVを介してパイプを通過させて、PVに推定サイズを与え、進行状況メーターが機能するようにします。
まだ克服していない問題の1つは、このコマンドを発行すると
find /home/user/test -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /www/test/$(dirname {})
宛先パスは/ www/test/home/user/test/.... FILES ...になり、「/ home/user/test」部分を削除するようにコマンドに指示する方法がわかりません。そのため、SRCディレクトリ内から実行する必要があります。
以下のgitリポジトリのprogress_barのソースコードを確認してください
https://github.com/Kiran-Bose/supreme
また、カスタムbashスクリプトパッケージsupremeを試して、プログレスバーの動作を確認しますcpおよびmvコマンド
機能の概要
(1)アプリを開く---- Firefox ----電卓----設定
(2)ファイルの管理----検索----ナビゲート----クイックアクセス
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3)電話の管理----電話から移動/コピー----電話へ移動/コピー----フォルダーを同期
(4)USBの管理---- USBから移動/コピー---- USBに移動/コピー