Назад | Перейти на главную страницу

Получить статус Rsync для вывода

В конце успешной работы rsync я получаю типичное:

sent 6022622 bytes  received 4751961 bytes  69738.40 bytes/sec
total size is 3328464484  speedup is 308.92

Я вызываю свое задание rsync через сценарий оболочки и в конце сценария записываю в текстовый файл в виде журнала. Без записи всего задания rsync в текстовый файл, есть ли способ просто зафиксировать, выводится ли это сообщение в конце, чтобы я мог написать что-то вроде «ОК» как часть моего вывода, чтобы обозначить, что синхронизация прошла успешно?

Спасибо!

Как уже указывалось в комментариях, лучший способ - проверить код возврата rsync. Вот код на bash, который вы можете использовать для преобразования кодов возврата в осмысленные строки:

rsync -a -v -h -i --stats --dry-run -A -H $source $target

case $? in
  0)
    echo "\e[32mSuccess"
    ;;
  1)
    echo "Syntax or usage error"
    ;;
  2)
    echo "Protocol incompatibility"
    ;;
  3)
    echo "Errors selecting input/output files, dirs"
    ;;
  4)
    echo "Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server."
    ;;
  5)
    echo "Error starting client-server protocol"
    ;;
  6)
    echo "Daemon unable to append to log-file"
    ;;
  10)
    echo "Error in socket I/O"
    ;;
  11)
    echo "Error in file I/O"
    ;;
  12)
    echo "Error in rsync protocol data stream"
    ;;
  13)
    echo "Errors with program diagnostics"
    ;;
  14)
    echo "Error in IPC code"
    ;;
  20)
    echo "Received SIGUSR1 or SIGINT"
    ;;
  21)
    echo "Some error returned by waitpid()"
    ;;
  22)
    echo "Error allocating core memory buffers"
    ;;
  23)
    echo "Partial transfer due to error"
    ;;
  24)
    echo "Partial transfer due to vanished source files"
    ;;
  25)
    echo "The --max-delete limit stopped deletions"
    ;;
  30)
    echo "Timeout in data send/receive"
    ;;
  35)
    echo "Timeout waiting for daemon connection"
    ;;
  *)
    echo "Unknown return code $? from rsync"
esac