При анализе ошибки rsync как сохранить состояние (я) возврата rsync? При передаче нескольких файлов ошибки могут возникать для каждого файла и собираться в конце, как показано в последней строке кода выше.
На «справочной» странице rsync приведены коды ошибок, которые он может вернуть, и их значение. Если вы пишете его в bash, вы можете посмотреть$?
0 Success 1 Syntax or usage error 2 Protocol incompatibility 3 Errors selecting input/output files, dirs 4 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 Error starting client-server protocol 6 Daemon unable to append to log-file 10 Error in socket I/O 11 Error in file I/O 12 Error in rsync protocol data stream 13 Errors with program diagnostics 14 Error in IPC code 20 Received SIGUSR1 or SIGINT 21 Some error returned by waitpid() 22 Error allocating core memory buffers 23 Partial transfer due to error 24 Partial transfer due to vanished source files 25 The --max-delete limit stopped deletions 30 Timeout in data send/receive 35 Timeout waiting for daemon connection
Это максимально исчерпывающий список «наиболее распространенных ошибок», но код ошибки 1 всегда находится наверху.
Что означает код ошибки rsync 23?
Rsync означает удаленную синхронизацию. На самом деле, Rsync — это быстрый, гибкий и безопасный инструмент для синхронизации файлов.
Но во многих случаях передача файлов через Rsync заканчивается ошибками.
Обычно код ошибки 23 означает частичную передачу. Этот код не указывает причину незавершенного переноса.
Таким образом, код ошибки 23 в основном является кодом состояния, обозначающим незавершенную передачу файла. Причиной этого может быть отказ в разрешении, ошибки ввода/вывода, опечатки в команде rsync и так далее.
Типичная ошибка проявляется как:
Как исправить код ошибки rsync 23?
Выделенные инженеры Bobcares отлаживают и исправляют ошибки rsync для наших клиентов. Теперь давайте рассмотрим несколько ситуаций, в которых наши клиенты получили код ошибки rsync 23.
Код ошибки rsync 23 означает частичную передачу из-за ошибки. Ошибка может быть любой: от опечаток в команде rsync до отказа в доступе к файлам. Инженеры службы поддержки разбираются с кодом ошибки 23.
1. Код ошибки 23 из-за отказа в разрешении
В первом случае клиент выполнил команду rsync для передачи файлов в своей системе.
Здесь была команда:
rsync -avz /home/user_name /home/guest/backup
Но эта команда привела к ошибке с кодом 23. Наши инженеры службы поддержки повторно выполнили команду rsync с параметрами -av . Затем мы получили сообщение об ошибке:
rsync: link_stat "xxxx/xxxxx/xxx" failed: Permission denied (13).
Итак, частичная передача файла произошла из-за ошибки отказа в разрешении. Поэтому мы исправили права доступа к файлам и папкам, чтобы устранить ошибку.
2. Найти файлы, которые не передаются
Опять же, одной из основных проблем при неудачной передаче Rsync является поиск файлов, которые не были переданы.
Чтобы решить эту проблему, пользователи всегда контролируют операции rsync, выполняя команду:
rsync -av --progress
Обычно эта команда выдает весь вывод терминала вместе с ошибками. Операция rsync заканчивается ошибкой с кодом 23. Но из-за большого количества выходных строк может быть сложно найти причину ошибки с кодом 23.
В этой ситуации наши инженеры службы поддержки снова выполняют команду rsync с параметром -n
.
По сути, этот параметр -n
означает пробный запуск, то есть он выполняет пробный запуск без внесения изменений. Таким образом, мы действительно могли видеть файлы, которые не были переданы. И мы могли бы исправить ошибки с этими файлами.
Фрагмент с одного из наших серверов:
root@awsxxx:~# rsync -azhv -e "ssh -p 2212" --dry-run /home/bobcares/test_200719 --delete-after --dry-run root@5x.136.xxx.121:/home/bobcares/test_200719
building file list ... done
created directory /home/bobcares/test_200719
test_200719/
test_200719/test
sent 79 bytes received 70 bytes 298.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
Точно так же мы могли бы также использовать опцию -q
для подавления сообщений, отличных от ошибок.
Наконец, мы также следим за тем, чтобы опечатки в команде rsync не вызывали ошибки.