如何获取使用 rsync 复制的文件数量

bor*_*910 3 rsync shell-script text-processing

我在脚本(在 OSX 上)中使用 rsync 从一个 raid 复制到 2 个备份驱动器,这在我运行脚本时发生,可能一天 10x-20x。我试图找出一种方法来解析 rsync 日志文件或任何与此相关的内容,以告诉我已复制的文件数。这是我的 rsync 命令:

rsync -auvh --delete --progress "$SourceTx" "$Dest1Tx" --log file="$SourceRoot/""CopyLog1.txt"
Run Code Online (Sandbox Code Playgroud)

并且我尝试(不工作)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"'
Run Code Online (Sandbox Code Playgroud)

Joh*_*024 7

要获取传输的文件数,请使用该--stats选项。例如:

$ rsync -auvh --stats --delete --log-file=1.log --progress "$SourceTx" "$Dest1Tx" | grep 'files transferred'
Number of regular files transferred: 21
Run Code Online (Sandbox Code Playgroud)

要捕获传输到 shell 变量的文件数:

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

以上内容经过过滤,仅显示传输的文件数。为了说明可用的其他信息--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
Run Code Online (Sandbox Code Playgroud)