Я экспериментирую с 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 настроен на удаленной стороне, так что он может выполнять всю магию контрольной суммы и дельта-кодирования, так что вы только передаете измененные биты по сети. Это, вероятно, не задокументировано на странице руководства, так как они добавляются автоматически, и обычно не нужно знать о них или заботиться о них.
Параметры --server и --sender используются внутри rsync и никогда не должны вводиться пользователем при обычных обстоятельствах. Некоторая осведомленность об этих параметрах может потребоваться в определенных сценариях, например, при настройке входа в систему, которая может запускать только команду rsync. Например, в каталоге поддержки дистрибутива rsync есть пример сценария с именем rrsync (для ограниченного rsync), который можно использовать с ограниченным входом в систему ssh.
На моей странице руководства:
Параметры --server и --sender используются внутри rsync и никогда не должны вводиться пользователем при обычных обстоятельствах. Некоторая осведомленность об этих параметрах может потребоваться в определенных сценариях, например, при настройке входа в систему, которая может запускать только команду rsync. Например, в каталоге поддержки дистрибутива rsync есть пример сценария с именем rrsync (для ограниченного rsync), который можно использовать с ограниченным входом в систему ssh.
Если вы не запускаете постоянный сервер rsync (используя rsyncd.conf и rsync --daemon
), тогда rsync необходимо создать свой собственный сервер на удаленном конце соединения для проверки файлов, выполнения хеширования и так далее.