Ich verwende rsync in einem Skript (unter OSX), um von einem RAID auf zwei Backup-Laufwerke zu kopieren. Das passiert, wenn ich das Skript ausführe, wahrscheinlich 10-20-mal am Tag. Ich versuche, eine Möglichkeit zu finden, die rsync-Protokolldatei oder irgendetwas anderes zu analysieren, um die Anzahl der kopierten Dateien zu ermitteln. Hier ist mein rsync-Befehl:
rsync -auvh --delete --progress "$SourceTx" "$Dest1Tx" --log file="$SourceRoot/""CopyLog1.txt"
und mein Versuch (funktioniert nicht), die Protokolldatei zu durchsuchen, um die Anzahl der kopierten Dateien zu ermitteln:
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"'
Antwort1
Um die Anzahl der übertragenen Dateien abzurufen, verwenden Sie die --stats
Option. Beispiel:
$ rsync -auvh --stats --delete --log-file=1.log --progress "$SourceTx" "$Dest1Tx" | grep 'files transferred'
Number of regular files transferred: 21
So erfassen Sie die Anzahl der in eine Shell-Variable übertragenen Dateien:
nfiles=$(rsync -auvh --stats --delete --log-file=1.log --progress "$SourceTx" "$Dest1Tx" | awk '/files transferred/{print $NF}')
Das Obige wurde gefiltert, um nur die Anzahl der übertragenen Dateien anzuzeigen. Um die anderen verfügbaren Informationen zu veranschaulichen --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