使用 rsync 将 Windows Server 2008 R2 文件备份到 Ubuntu,使用 plink 进行 SSH

使用 rsync 将 Windows Server 2008 R2 文件备份到 Ubuntu,使用 plink 进行 SSH

我正在尝试配置 rsync 以将 Windows Server 2008 R2 机箱上的文件备份到 Ubuntu 机箱。所有(非测试)数据都必须加密。

我已经设法仅使用 rsync 使其工作,从端口 873 接收数据,但在使用 plink 时也遇到了问题。

这是我的配置:

Ubuntu

rsyncd.conf:

log file = /var/log/rsync.log
[ukwindb1backup]
   path = /home/ukwindb1/rsync
   comment = Backup
   uid = ukwindb1
   gid = ukwindb1
   use chrott = true
   read only = false
   auth users = ukwindb1
   secrets file = /etc/rsyncd.secrets

Rsync 守护进程已启动,并且有一个“ukwindb1”帐户,该帐户具有用于身份验证的 SSH 公钥。所有 SSH 流量都在不同的端口上,而不是 22。

存储在 rsyncd.secrets 文件中的“ukwindb1”的密码与 Ubuntu 帐户的密码不同(尽管 SSH 登录的密码已被禁用)。

Windows 服务器

我已经安装了 cygwin,并且设法使用这个批处理文件使 rsync 工作:

rsync.exe -qrtz --password-file=/home/Administrator/secret --delete "/cygdrive/c/Backups" ukwindb1@[removed-ip]::ukwindb1backup
pause

我也安装了 Putty 程序,并想使用 plink 连接到另一台服务器,以便我可以使用 Pageant 来管理我的密码密钥。

我尝试了这个批处理文件,使用 plink 连接到 SSH 服务器,并且工作正常:

plink -ssh -P [removed-port] -l ukwindb1 -i C:\ukwindb1.ppk [removed-ip]
pause

现在,当我尝试使用这个批处理文件将两者放在一起时,它失败了:

rsync.exe -qrtz -e "plink -ssh -P [removed-port] -l ukwindb1 -i C:\ukwindb1.ppk [removed-ip]" --delete "/cygdrive/c/Backups" ukwindb1@[removed-ip]::ukwindb1backup
pause

有什么想法吗?我到底做错了什么?

此外:

我真的需要运行 rsync 守护进程吗?

我可以从客户端指定服务器上的目录,而不是“::ukwindb1backup”吗?

答案1

我认为您可以完全跳过rsyncdplink通过稍微重新安排您的架构(这将带来其他好处)。

我认为rsyncd守护进程实际上不需要运行就可以执行基本的 rsync 备份目的。 rsync通常只需通过 SSH 连接到另一个框,在远端启动 rsync 实例,然后两者rsync通过 ssh 互相通信 -rsyncd守护进程实际上并不参与。 rsyncd通常用于提供供多个客户端下载的内容(例如镜像服务器)。

在此设置中,我假设接收备份的机器(Ubuntu 机器)是更“受信任”的系统(从安全角度来看)——不是因为它是 Ubuntu,而是因为备份服务器自然必须保存多个敏感主机的数据。因此,我建议rsync从 Ubuntu 机器启动,并设置密钥信任关系,以便 Windows 机器信任 Ubuntu 机器,而不是相反。这意味着在 Cygwin 下设置 sshd,并将其锁定(使用基于主机的防火墙),以便只允许来自备份服务器的连接。

然后您可以简单地执行:

rsync -qrtz windowsbox:/path/to/files /path/to/ubuntu/backups

... 它还演示了如何在服务端指定目录。

作为下一个故障排除步骤,我将放弃尝试使用rsyncd,暂时忽略基于密钥的身份验证,就像您在之前的故障排除中所做的那样,然后尝试使用基于密码的身份验证进行简单的 rsync(几个测试文件)。

一旦基本同步工作正常,您还需要查看 的rsync选项--modify-window,该选项将忽略由于 Windows 和类 Unix 处理时间戳秒数的方式不同而导致的时间戳细微偏移。否则,原本可以跳过的文件将被一遍又一遍地复制。

--delete我还强烈建议您在完成解决方案的调试和测试后再选择此选项。一个拼写错误就可能让您删除比预期多得多的内容。

相关内容