リポジトリとしてUbuntu 12.04を使用していますが、コマンドラインからrsync
を使用しているときにプログレスバーを表示したいと思います。オプション この記事で推奨 (-P
)を試しましたが、進行状況バーを表示し、Grsyncを使用しないことを好みます。現在rsync -P source dest
を使用しています。
これはどう?
rsync_param="-av"
rsync "$rsync_param" a/ b |\
pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
$rsync_param
パラメーターの二重入力を避ける
$(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
完了するステップの数を決定します。
a/ b
a/
はソースですb
はターゲットですrsyncには--info
オプションがあり、現在の進行状況だけでなく、転送速度と経過時間も出力できます。
--info=FLAGS fine-grained informational verbosity
使用方法の説明は、manページの-P
オプションの下にあります。
-P The -P option is equivalent to --partial --progress. Its purpose is to
make it much easier to specify these two options for a long transfer that
may be interrupted.
There is also a --info=progress2 option that outputs statistics based on
the whole transfer, rather than individual files. Use this flag
without out‐putting a filename (e.g. avoid -v or specify --info=name0)
if you want to see how the transfer is doing without scrolling the screen
with a lot of names. (You don’t need to specify the --progress
option in order to use --info=progress2.)
したがって、次のとおりです。
rsync -r --info=progress2 --info=name0 "$src" "$dst"
次の結果が出力され、継続的に更新されます。
18,757,542,664 100% 65.70MB/s 0:04:32 (xfr#1389, to-chk=0/1510)
転送が開始すると、チャンクの総数、したがって現在の進行状況が、同期のためにさらにファイルが検出されるため、再帰オプションを使用すると変更されることに注意してください
--progress
および--stats
パラメーターを使用できます。
rsync -avzh --progress --stats root@server:/path/to/file output_name
root@server's password:
receiving incremental file list
file
98.19M 54% 8.99MB/s 0:00:08
これは最終的に機能しました:
rsync "$rsync_param" -a --Prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)
rsync
のバージョンが--info=progress2
オプションを受け入れない場合、 tqdm
を使用できます。
インストールする:
pip install tqdm
使用するには:
$ rsync -av/source/dest | tqdm --unit_scale | wc -l 10.0Mit [00:02、3.58Mit/s]
ええ、 ジョンが言った :--info=progress2
オプションを使用してください。しかし、rsyncのバージョンが古すぎてこのオプションをサポートしていない場合はどうすればよいですか?回答:rsyncをアップグレードしてください!
rsync
をビルドする方法は次のとおりです。(Ubuntu 16.04でテスト済み)
cd
ソースコードを含むこの抽出ディレクトリにrsync
edする必要があります。rsync
の現在のバージョンを確認してください。後で実際に更新されたことがわかるように、これをメモしてください。
rsync --version
必要なツールをインストールします。
Sudo apt update
Sudo apt install yodl
ビルド:
./configure
make
Sudo make install
更新されたことを確認します。
rsync --version
サンプル出力:
$ rsync --version rsync version 3.1.3 protocol version 31 Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, no ACLs, xattrs, iconv, symtimes, prealloc rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details.
Manページで「progress2」を検索します。これで、--info=progress2
オプションにアクセスできるようになります。
man rsync
...次に/
キーを押してprogress2
と入力します。 Enterキーを押して検索します。探しているエントリが見つかるまで、 'n'ext一致のn
を押します。
個々のファイルではなく、転送全体に基づいて統計を出力する
--info=progress2
オプションもあります。多くの名前で画面をスクロールせずに転送がどのように行われているかを確認したい場合は、ファイル名を出力せずにこのフラグを使用します(例:-v
を回避するか、--info=name0
を指定します)。 (--progress
を使用するために--info=progress2
オプションを指定する必要はありません。)