rsync を使用してコピーされたファイルの数を取得する方法

rsync を使用してコピーされたファイルの数を取得する方法

私はスクリプト (OSX 上) で rsync を使用して RAID から 2 つのバックアップ ドライブにコピーしています。これは、スクリプトを実行すると発生します (おそらく 1 日に 10 ~ 20 回)。コピーされたファイルの数を知るために、rsync ログ ファイルまたはその他を解析する方法を見つけようとしています。これが私の rsync コマンドです。

rsync -auvh --delete --progress "$SourceTx" "$Dest1Tx" --log file="$SourceRoot/""CopyLog1.txt"

ログファイルを grep してコピーされたファイルの数を取得しようとする私の試み (うまくいきませんでした):

cd "$SourceRoot/"
howMany=$(cat CopyLog1.txt | grep -c .mov)
osascript -e 'display notification "Transcode Copy Complete, '$howMany' files transfered, Log Files Created" with title "Transcode Copy Script"'

答え1

転送されたファイルの数を取得するには、--statsオプションを使用します。例:

$ rsync -auvh --stats --delete --log-file=1.log --progress "$SourceTx" "$Dest1Tx" | grep 'files transferred'
Number of regular files transferred: 21

シェル変数に転送されたファイルの数を取得するには:

nfiles=$(rsync -auvh --stats --delete --log-file=1.log --progress "$SourceTx" "$Dest1Tx" | awk '/files transferred/{print $NF}')

上記は転送されたファイルの数だけを表示するようにフィルタリングされています。 で利用可能なその他の情報を示すには、次のようになります--stats

$ rsync -auh --stats --delete  srcdir destdir

Number of files: 14 (reg: 10, dir: 4)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 0
Total file size: 209 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 342
Total bytes received: 27

sent 342 bytes  received 27 bytes  738.00 bytes/sec
total size is 209  speedup is 0.57

関連情報