2013-12-23 3 views
15

Я пишу скрипт, который делает ежедневные снимки домашних каталогов пользователей. Сначала я делаю всухую с помощью:Всесторонний список кодов ошибок rsync

rsync -azvrn --out-format="%M %f" source/dir dest/dir 

, а затем фактическая операция Rsync (путем удаления опции -n).

Я пытаюсь разобрать выход сухого хода. В частности, мне интересно узнать точную причину ошибки rsync (если это произошло). Кто-нибудь знает о

  1. Наиболее часто встречающиеся ошибки rsync и их коды?
  2. Ссылка на страницу с кодом ошибки rsync?

Самое главное, что rsync (по крайней мере, на CentOs 5) не возвращает код ошибки. Скорее он отображает ошибку внутренне и возвращается с 0. Как таким образом:

sending incremental file list 
rsync: link_stat "/data/users/gary/testdi" failed: No such file or directory (2) 

sent 18 bytes received 12 bytes 60.00 bytes/sec 
total size is 0 speedup is 0.00 (DRY RUN) 

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6] 

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

ответ

28

На странице «человек» rsync приведены коды ошибок, которые он может вернуть и что они означают. Если вы сценариев его в Баш, вы можете посмотреть на $?

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 будет на самом верху.

+0

Я не понимал, что на странице руководства был этот список! Спасибо iandouglas. Кстати, я разбираю его на Python. Вы случайно не знаете, что такое пифонический эквивалент «$?»? – seebiscuit

+0

Да, если вы используете subprocess.call, проверьте эту страницу: http://www.python.org/doc//current/library/subprocess.html#replacing-os-system nutshell: 'return_code = subprocess .call (...) ' – iandouglas

+0

Я заметил, что' rsync' смешно в возвращении кодов ошибок в оболочку. Например, я подал ему неправильный исходный каталог и внутренне «rsync» сообщил о двух ошибках: «rsync: link_stat»/data/users/gary/testdi «не удалось: нет такого файла или каталога (2)» и «rsync error: some файлы/attrs не были перенесены (см. предыдущие ошибки) (код 23) в main.c (1039) [sender = 3.0.6] '. Тем не менее, печать $? в оболочке сразу после того, как звонок вернулся 0. – seebiscuit

Смежные вопросы