|
12 | 12 | # |
13 | 13 |
|
14 | 14 | # shellcheck disable=SC2034 |
15 | | -VERSION=1.11.0 |
| 15 | +VERSION=1.12.0 |
16 | 16 |
|
17 | 17 | export LC_ALL=C |
18 | 18 |
|
|
271 | 271 | ############################################################################## |
272 | 272 | # Current status |
273 | 273 |
|
| 274 | +# we read the log file early |
| 275 | +if [ -n "${SHOWLOG}" ]; then |
| 276 | + |
| 277 | + # per default TM runs each hour: check the last 60 minutes |
| 278 | + LOG_ENTRIES=$( log show --predicate 'subsystem == "com.apple.TimeMachine"' --info ) |
| 279 | + |
| 280 | +fi |
| 281 | + |
274 | 282 | status=$(tmutil status) |
275 | 283 |
|
276 | 284 | if echo "${status}" | grep -q 'BackupPhase'; then |
@@ -371,27 +379,67 @@ else |
371 | 379 |
|
372 | 380 | fi |
373 | 381 |
|
| 382 | +if [ -n "${LOG_ENTRIES}" ] ; then |
| 383 | + |
| 384 | + SPEED=$( |
| 385 | + echo "${LOG_ENTRIES}" | |
| 386 | + grep 'Progress: ' | |
| 387 | + tail -n 1 | |
| 388 | + sed 's/.*done, //' |
| 389 | + ) |
| 390 | + |
| 391 | + |
| 392 | + PERC_PER_SECOND=$( echo "${SPEED}" | sed 's/%\/s.*//' ) |
| 393 | + PERC_PER_MINUTE=$( echo "scale=2;${PERC_PER_SECOND}*60" | bc ) |
| 394 | + if [ -n "${PERC_PER_MINUTE}" ] ; then |
| 395 | + if echo "${PERC_PER_MINUTE}" | grep -q '^[.]' ; then |
| 396 | + PERC_PER_MINUTE=" (0${PERC_PER_MINUTE} %/min)" |
| 397 | + else |
| 398 | + PERC_PER_MINUTE=$( echo "${PERC_PER_MINUTE}" | sed 's/[.].*//' ) |
| 399 | + PERC_PER_MINUTE=" (${PERC_PER_MINUTE} %/min)" |
| 400 | + fi |
| 401 | + fi |
374 | 402 |
|
| 403 | + DATA_SPEED=$( |
| 404 | + echo "${SPEED}" | |
| 405 | + sed -e 's/.*%\/s, //' -e 's/,[ 0-9.]*items.*//' |
| 406 | + ) |
| 407 | + if [ -n "${DATA_SPEED}" ] ; then |
| 408 | + DATA_SPEED=" (${DATA_SPEED})" |
| 409 | + fi |
| 410 | + |
| 411 | + ITEM_SPEED=$( |
| 412 | + echo "${SPEED}" | |
| 413 | + sed 's/.*MB\/s, //' |
| 414 | + ) |
| 415 | + |
| 416 | +fi |
375 | 417 |
|
376 | 418 | if echo "${status}" | grep '_raw_Percent' | grep -q -v '[0-9]e-'; then |
377 | 419 | if echo "${status}" | grep -q '_raw_Percent" = 1;'; then |
378 | 420 | percent='100%' |
379 | 421 | else |
380 | 422 | percent=$(echo "${status}" | grep '_raw_Percent" = "0' | sed 's/.*[.]//' | sed 's/\([0-9][0-9]\)\([0-9]\).*/\1.\2%/' | sed 's/^0//') |
381 | 423 | fi |
382 | | - printf 'Percent:\t%s\n' "${percent}" |
| 424 | + printf 'Percent:\t%s%s\n' "${percent}" "${PERC_PER_MINUTE}" |
383 | 425 |
|
384 | 426 | raw_percent=$(echo "${status}" | grep '_raw_Percent' | sed 's/.*\ =\ "//' | sed 's/".*//') |
385 | 427 |
|
386 | 428 | if echo "${status}" | grep -q 'bytes'; then |
387 | 429 | size=$(echo "${status}" | grep 'bytes\ \=' | sed 's/.*bytes\ \=\ //' | sed 's/;.*//') |
388 | 430 | copied_size=$(echo "${size} / ${raw_percent}" | bc | format_size) |
389 | 431 | size=$(echo "${size}" | format_size) |
390 | | - printf 'Size:\t\t%s of %s\n' "${size}" "${copied_size}" |
| 432 | + printf 'Size:\t\t%s of %s%s\n' "${size}" "${copied_size}" "${DATA_SPEED}" |
391 | 433 | fi |
392 | 434 |
|
393 | 435 | fi |
394 | 436 |
|
| 437 | +if [ -n "${ITEM_SPEED}" ] ; then |
| 438 | + |
| 439 | + printf 'Speed:\t\t%s\n' "${ITEM_SPEED}" |
| 440 | + |
| 441 | +fi |
| 442 | + |
395 | 443 | # Print verifying status |
396 | 444 | if echo "${status}" | grep -q -F HealthCheckFsck; then |
397 | 445 | if echo "${status}" | grep -q -F 'Percent = "0'; then |
@@ -444,8 +492,8 @@ if [ -n "${SHOWLOG}" ]; then |
444 | 492 | SEQ=$(seq 1 "${WIDTH}") |
445 | 493 |
|
446 | 494 | # per default TM runs each hour: check the last 60 minutes |
447 | | - ENTRIES=$( |
448 | | - log show --predicate 'subsystem == "com.apple.TimeMachine"' --info | |
| 495 | + LOG_ENTRIES=$( |
| 496 | + echo "${LOG_ENTRIES}" | |
449 | 497 | grep --line-buffered \ |
450 | 498 | --invert \ |
451 | 499 | --regexp '^Timestamp' \ |
@@ -496,13 +544,13 @@ if [ -n "${SHOWLOG}" ]; then |
496 | 544 | tail -n "${SHOWLOG}" |
497 | 545 | ) |
498 | 546 |
|
499 | | - if [ -n "${ENTRIES}" ]; then |
| 547 | + if [ -n "${LOG_ENTRIES}" ]; then |
500 | 548 |
|
501 | 549 | # shellcheck disable=SC2086 |
502 | 550 | printf '%.s-' ${SEQ} |
503 | 551 | echo |
504 | 552 |
|
505 | | - echo "${ENTRIES}" |
| 553 | + echo "${LOG_ENTRIES}" |
506 | 554 |
|
507 | 555 | # shellcheck disable=SC2086 |
508 | 556 | printf '%.s-' ${SEQ} |
|
0 commit comments