cómo obtener el número de archivos copiados usando rsync

cómo obtener el número de archivos copiados usando rsync

Estoy usando rsync en un script (en OSX) para copiar desde una incursión a 2 unidades de respaldo, lo que sucede cuando ejecuto el script, probablemente entre 10 y 20 veces en un día. Estoy tratando de encontrar una manera de analizar el archivo de registro rsync, o cualquier otra cosa, para decirme la cantidad de archivos que se copiaron. Aquí está mi comando rsync:

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

y mi intento (que no funciona) de rastrear el archivo de registro para obtener el número de archivos copiados:

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"'

Respuesta1

Para obtener la cantidad de archivos transferidos, use la --statsopción. Por ejemplo:

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

Para capturar la cantidad de archivos transferidos a una variable de shell:

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

Lo anterior se filtró para mostrar solo la cantidad de archivos transferidos. Para ilustrar el resto de la información disponible con --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

información relacionada