基于 SSH 的 Rsync 是 ReadyNAS 企业级产品(Pro,NVX,2100,3200)所支持的一种备份方法。它允许管理程序通过因特网,采用加密及压缩技术將用户的 ReadyNAS 同步到远程服务器或者其他被支持的ReadyNAS 设备。
本文描述了如何在一台 ReadyNAS 设备上设置一项 Rsync 备份任务,实现将数据同步到另一台 ReadyNAS 设备。
一、简介
ReadyNAS 的备份方法很多,包括 Rsync。它允许管理员将 ReadyNAS 通过网络与支持 Rsync 的远程服务器或其它 ReadyNAS 同步数据,过程中可选加密和压缩。
此文章是介绍如何在 ReadyNAS 的备份任务中利用 Rsync 同步文件到其它 ReadyNAS 或 Linux 服务器。
二、软件简介
1、什么是 Rsync
1.1 软件简介
Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护。Rsync 使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。
Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
Rsync 支持大多数的类 Unix 系统,无论是 Linux、Solaris 还是 BSD 上都经过了良好的测试。此外,它在windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。
Rsync 的基本特点如下:
- 可以镜像保存整个目录树和文件系统;
- 可以很容易做到保持原来文件的权限、时间、软硬链接等;
- 无须特殊权限即可安装;
- 优化的流程,文件传输效率高;
- 可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
- 支持匿名传输。
1.2 核心算法
假定在名为 α 和 β 的两台计算机之间同步相似的文件 A 与 B,其中 α 对文件A拥有访问权,β 对文件 B 拥有访问权。并且假定主机 α 与 β 之间的网络带宽很小。那么 Rsync 算法将通过下面的五个步骤来完成:
- β 将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。
- β 对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的 MD4 强校验。
- β 将这些校验结果发给 α。
- α 通过搜索文件 A 的所有大小为 S 的数据块(偏移量可以任选,不一定非要是 S 的倍数),来寻找与文件B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
- α 发给 β 一串指令来生成文件 A 在 β 上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。
2、什么是 SSH
2.1、什么是 SSH
传统的网络服务程序,如:ftp、POP 和 telnet 在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
从前,一个名芬兰程序员开发了一种网络协议和服务软件,称为 SSH(Secure SHell 的缩写)。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS 和 IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,虽然许多人把 Secure Shell 仅当作 Telnet 的替代物,但你可以使用它来保护你的网络连接的安全。你可以通过本地或远程系统上的 Secure Shell 转发其他网络通信,如 POP、X、PPP 和 FTP。你还可以转发其他类型的网络通信,包括 CVS 和任意其他的 TCP 通信。另外,你可以使用带 TCP 包装的 Secure Shell,以加强连接的安全性。除此之外,Secure Shell 还有一些其他的方便的功能,可用于诸如 Oracle 之类的应用,也可以将它用于远程备份和像 SecurID 卡一样的附加认证。
2.2、SSH 的工作机制
SSH 分为两部分:客户端部分和服务端部分。
服务端是一个守护进程(demon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
客户端包含ssh程序以及像 scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和 IP 地址再发送密钥给 SSH 的客户端,本地再将密钥发回给服务端,自此连接建立。
三、设置示例和步骤
1、示例拓扑
2、ReadyNAS 与 ReadyNAS 的 Rsync 备份
2.1、备份源
假设 IP 地址为192.168.168.1的 ReadyNAS 是备份源。
2.1.1、启用 Rsync 协议
在 Web 管理页面→标准文件协议→Rsync→应用。
2.1.2、设定 Rsync 权限
请按以下步骤设置 Rsync 权限。
2.2、备份目标
假设 IP 地址为192.168.168.2的 ReadyNAS 是备份目标。
2.2.1、新增备份任务
在步骤一中指定备份源的类型为“远程:Rsync 服务器”;备份源的主机 IP 地址;备份源的共享名称等,可参考下图的设置。其余步骤可根据需求设定。
2.2.2、执行备份任务
手动点击“开始按钮”可立即执行备份。或者按指定的时间定时自动执行备份。
3、ReadyNAS 与 ReadyNAS 基于 SSH 的 Rsync 备份
在之前配置的基础上,增加 SSH 的配置。
3.1、备份目标
首先启用 SSH,然后点击“下载公共 SSH 密钥文件”,将文件保存到 PC 上。
3.2、备份源
点击“管理 SSH 密钥”,添加从备份目标下载保存的密钥。
3.3、测试
在备份目标上测试基于 SSH 的 Rsync 备份