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

BackupPC - почему он использует rsync --sender --server…?

Я экспериментирую с BackupPC на сервере CentOS 5.5. У меня почти все настроено со значениями по умолчанию.

Я попытался создать базовую резервную копию для каталога хоста / www. Резервное копирование не выполняется из-за следующих ошибок:

full backup started for directory /www
Running: /usr/bin/ssh -q -x -l root target /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Xfer PIDs are now 30395
Read EOF: Connection reset by peer
Tried again: got 0 bytes
Done: 0 files, 0 bytes
Got fatal error during xfer (Unable to read 4 bytes)
Backup aborted (Unable to read 4 bytes)
Not saving this as a partial backup since it has fewer files than the prior one (got 0 and 0 files versus 0)

Прежде всего, да, у меня есть настройка ключей ssh, позволяющая мне подключаться к целевому серверу по ssh без необходимости ввода пароля.

В процессе устранения неполадок я попробовал указанную выше команду ssh прямо из командной строки, и она зависла. Глядя на конец сообщений отладки для SSH, я получаю:

debug1: Sending subsystem: /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Request for subsystem '/usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/' failed on channel 0

Затем я начал смотреть на флаги rsync. Я не узнал --server и --sender. Глядя на справочные страницы rsync, я не вижу ничего о --server или --sender там. Для чего они там?

Глядя на конфигурацию BackupPC, я получаю следующее:

RsyncClientPath = /usr/bin/rsync
RsyncClientCmd = $sshPath -q -x -l root $host $rsyncPath $argList+

А в качестве аргументов я перечислил следующее:

--numeric-ids
--perms
--owner
--group
-D
--links
--hard-links
--times
--block-size=2048
--recursive

Обратите внимание, что нет --server, --sender или --ignore-times. Почему эти вещи добавляются? Это часть проблемы?

В --server --sender - это параметры, которые используются при запуске rsync по каналу. Сервер rsync настроен на удаленной стороне, так что он может выполнять всю магию контрольной суммы и дельта-кодирования, так что вы только передаете измененные биты по сети. Это, вероятно, не задокументировано на странице руководства, так как они добавляются автоматически, и обычно не нужно знать о них или заботиться о них.

Из человек rsync (1)

Параметры --server и --sender используются внутри rsync и никогда не должны вводиться пользователем при обычных обстоятельствах. Некоторая осведомленность об этих параметрах может потребоваться в определенных сценариях, например, при настройке входа в систему, которая может запускать только команду rsync. Например, в каталоге поддержки дистрибутива rsync есть пример сценария с именем rrsync (для ограниченного rsync), который можно использовать с ограниченным входом в систему ssh.

На моей странице руководства:

Параметры --server и --sender используются внутри rsync и никогда не должны вводиться пользователем при обычных обстоятельствах. Некоторая осведомленность об этих параметрах может потребоваться в определенных сценариях, например, при настройке входа в систему, которая может запускать только команду rsync. Например, в каталоге поддержки дистрибутива rsync есть пример сценария с именем rrsync (для ограниченного rsync), который можно использовать с ограниченным входом в систему ssh.

Если вы не запускаете постоянный сервер rsync (используя rsyncd.conf и rsync --daemon), тогда rsync необходимо создать свой собственный сервер на удаленном конце соединения для проверки файлов, выполнения хеширования и так далее.