是否可以使用 Windows 10 的 Windows Subsystem for Linux (WSL) 在 Windows 机器上运行 rsync 服务器?
我们有一个 Linux rsync 系统,可以轮询当前正在运行 DeltaCopy 的 Windows 机器,但偶尔会遇到奇怪的问题。希望“内置”WSL rsync 可以改善这种情况,但不知道如何安排它作为服务器运行。
答案1
我已成功让它在我的系统上运行。它不是 Windows 服务意义上的守护进程,而更像是当前用户的后台任务,但它对我来说很管用。
安装和初始配置
我为我的用户安装了 WSL,并选择了 Debian 作为 Linux 应用程序。无论如何,它应该适用于任何发行版,因为它只使用rsync
。
在我的 Linux 主目录中,我创建了两个文件:rsyncd.conf
和secrets
。
conf文件:
auth users = nas
secrets file = /home/peter/rsyncd/secrets
hosts allow = 192.168.1.5,192.168.1.11
log file = /home/peter/rsyncd/rsyncd.log
port = 8730
use chroot = false
read only = false
[N_Almacen]
path = /mnt/n/Almacen/rsyncd
[N_AlmacenNB]
path = /mnt/n/AlmacenNB/rsyncd
我使用端口 8730 以避免运行守护进程根。这也是我禁用的原因chroot。
机密文件像往常一样包含用户名和密码。
如何运行它
最后到了棘手的部分。如何运行它?
您可以用以下命令进行测试:
rsync --daemon --config=/home/peter/rsyncd/rsyncd.conf --no-detach
当您确信配置正常工作时,您可以删除该--no-detach
选项,该命令将生成后台任务。即使您关闭所有狂欢终端任务将保留在后台。
如何在后台自动启动
那么现在如何在登录时自动运行?
创建一个 Windows 快捷方式,C:\Windows\System32\wsl.exe
并在其后附加命令。完整命令如下:
C:\Windows\System32\wsl.exe rsync --daemon --config=/home/peter/rsyncd/rsyncd.conf
现在您可以将此快捷方式放入启动您的用户的文件夹。
答案2
–rsync路径选项可用于从另一台机器访问 WSL rsync。此选项用于指定要在远程机器上运行什么程序来启动 rsync。因此 --rsync-path='wsl rsync' 应该可以解决问题。
例如,
rsync -avhP -e ssh local_path host:remote_path --rsync-path='wsl rsync'
答案3
面对同样的问题,我发现建议的解决方案对我而言不起作用。在 Win10 Home 版本上安装了 OpenSSH 服务器,并且ssh <user>@<winpc>.some.domain
在 Linux 系统上运行良好。--rsync-path='wsl rsync'
在 rsync 调用中使用会导致 Win10 出现错误消息。根据精确的语法,它报告“名称中的某些语法错误”或“无法识别“wsl rsync””。
对我来说有效的解决方案是在 Win10 机器上创建一个名为的文件,C:\Windows\System32\wslrsync.bat
其中包含:
@echo off
wsl rsync %*
--rsync-path=wslrsync
与rsync-call结合使用。