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

Как rsync --daemon узнает, в каком направлении он запущен?

Я хочу запустить rsync через зашифрованное соединение SSL / TLS. Он не делает этого напрямую, поэтому я изучаю варианты. Программа stunnel выглядит многообещающей, хотя и более сложной, чем задуманная, из-за необходимости перескакивать соединения с опцией -r. Однако я обнаружил, что есть опция -l для запуска программы. Я предполагаю, что это работает, имея два процесса: один для выполнения работы SSL / TLS, а другой - рабочий, с которым общается клиент. Затем они будут связываться с помощью пары труб или двустороннего разъема между ними.

Что показалось мне странным, когда я просмотрел ряд веб-страниц, чтобы увидеть, как это правильно настроить, так это то, что независимо от того, работает ли он как автономный демон или под супер-демоном, таким как inetd, аргументы для rsync одинаковы. Как rsync --daemon знает, следует ли ему открывать сокет и прослушивать его для многих подключений или просто обслуживать одно подключение, взаимодействуя с дескрипторами stdin / stdout, когда он запускается (который действительно прошел бы дополнительный процесс для обрабатывать шифрование, описание и уровень протокола SSL / TLS)?

И затем мне нужно найти способ обернуть клиента, чтобы он выполнял SSL / TLS с помощью одной простой команды (в отличие от переключения соединений, которое, похоже, предпочитает stunnel).

И затем мне нужно найти способ обернуть клиента, чтобы он выполнял SSL / TLS с помощью одной простой команды (в отличие от переключения соединений, которое, похоже, предпочитает stunnel).

rsync имеет --rsh возможность создать stunnel и использовать stdin / stdout на стороне клиента, а stunnel имеет exec возможность создать rsync на стороне сервера - объединение этих двух даст вам то, что вы хотите. Видеть Доззи rsync через SSL для получения дополнительной информации и доступных сценариев для запуска этой конфигурации (для загрузки требуется git).

Из раздела по --daemon в rsync(1) страница руководства:

Если стандартный ввод - это сокет, тогда rsync будет считать, что он запускается через inetd, в противном случае он отсоединится от текущего терминала и станет фоновым демоном.

Вы можете увидеть аргументы командной строки, которые применяются к режиму демона, запустив:

rsync --daemon --help