分类: LINUX
2010-07-21 14:16:56
一.教程:
1.从原始网站下载:
2.[root@localhost bin]#./configure
[root@localhost bin]#make
[root@localhost bin]#make install
说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端 以服务器方式运行rsync,它监听873端口。
3.运行rsync
/usr/local/bin/rsync --daemon
验证启动是否成功:
netstat -na|grep 873
4.配置rsync
简单配置:编辑/etc/rsyncd.conf文件如下:
#全局配置部分
motd file = /etc/rsyncd.motd 欢迎信息文件名称和存放位置(此文件没有,可以自行添加)
read only = yes
list = yes
uid = root
gid = root
#hosts allow = 10.4.5.213
#hosts deny = 10.4.5.0/24
use chroot = no
max connections = 5
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#模块配置部分
[paolo]
comment = Paolo 's directory
path = /home/test/software
auth users = rsync,username2,username3
secrets file = /etc/rsyncd.secrets 认证用户名和密码文件的名称和位置
hosts allow x.x.x.x,y.y.y.y
5.生成验证证文件
echo "rsync:rsync_password" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
6.客户端
vi /aa/bb/rsyncd.secrets
passwd
rsync -vzrtopg --delete --progress --password-file=/aa/bb/rsyncd.secretsrsync@10.4.5.161::paolo /china/
上面的命令把10.4.5.161服务器上的paolo模块中的目录的文件传送到本机
/china目录中,并删除本机/china目录中在161服务器paolo模块指定目录中没有的文件。以使两台计算机的目录文件同步。
正如很多人知道的那样,Rsync可是开源同步软件中的老大哥。很多人(当然也包括我自己)都在使用 它来进行同步、备份工作。它的功能强大,应用灵活,就不多说了。如果对Rsync前世今生很感兴趣,那么一会看看简介,然后到他们官方网站好好看看。
虽然Rsync很强大,但是它并没有直接支持加密传输。也就是说,它是直接明文传输的,对于一些安全 要求高的数据,那就不太保险了。不信?你可以用抓包工具试试看。
如果要传输保密文件,那怎么办?放心,Rsync提供了ssh通道功能。也就是通过ssh安全通道来 传输,传输过程中,数据是经过ssh加密的。不信?你还是可以抓包看看。
这就是我们要进行的工作了,配置一个具有ssh安全通道的,安全级别高的同步体系。
[] 加密传输我们利用SSH来达到安全通道的目的。SSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做 专用密钥和 公用密钥(简称 私钥和公钥,下面我们都使用简称)。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。
尽管基于密钥的认证协议相当安全,但是如果不注意保护,把私钥泄露了,那么别人也就可以登录到有公钥 的服务器。那就很不安全了。
因此居于安全考虑,我们进行的同步配置,是居于普通用户来进行备份的。
[] 同步方向在这里采用的,不是常见的C/S模式,即源服务器运行rsync --daemon模式,备份服务器主动同步。而是采用SSH通道模式,不需要配置rsync --daemon。从源服务器直接同步到备份服务器。
[] 环境说明我配置的是A、B 两台主机,A主机做为源服务器,B主机作为客户端。
[] 硬件环境两台服务器的配置一样,硬件配置如下:
单志强2.4G CPU两台服务器在同一个机房,但是不同网段。IP地址分别设置如下:
A服务器的IP地址:操作系统:
A、B两台服务器均安装了FreeBSD 6.2-RELEASE-p2(通过make world升级到最新)。SSH是系统自带的版本:
# ssh -V由于我们是在unix/linux下使用SSH和RSYNC,因此仅仅介绍SSH和RSYNC,而不 介绍系统以及其他软件。
[] SSH的简介SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺 骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为 FTP、Pop、甚至为PPP提供一个安全的"通道"。
最初的SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用 OpenSSH。OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。目前所发行的开源 UNIX/Linux,默认都会带有OpenSSH(一些可能需要你额外的安装一下)。
如果你喜欢的话,也可以安装SSH,他虽然有限制,但是对于非商业用户,是可以免费使用的。
相关链接如下:在RSYNC的官方网站上,对于RSYNC的介绍非常简单。
rsync 是一个开放源码的快速的文件同步工具,是在GUN的GPL2协议下发布的。由于系统会自带有SSH,我们就直接使用系统自带的SSH,而不再单独安装。
我会另外写一个SSH安装配置的专题文章。
[] RSYNC的安装我是在FreeBSD上进行的安装配置,因此同时给出利用FreeBSD的ports安装和手工安装 两种方式。其中手工安装方式,也可以在Linux下进行。
[] ports方式安装在开始ports安装之前,先做一次ports更新。这样做的目的是让ports保持最新,并且让通 过ports安装的软件是最新的。
用CVSUP更新:进入rsync的ports目录:
# cd /usr/ports/net/rsync/查看软件版本信息:
# cat distinfo由此我们可以得知rsync的版本是 2.6.9,也就是目前最新的发行版本。
选择配置:
# make config在出现选项界面里,通过移动上下键和空格键,选择SSH,也就是用SSH替换RSH。其他的默认就可 以了。
完成安装:
# make install clean很简单吧?使用ports的好处就是,安装太方便了。只要执行 make install 它会自动下载,编译,安装。clean 是告诉ports,安装完后,清楚源码文件和其他过程文件。
[] 手工安装*下载安装包
下载页面:
具体下载链接:
*解压和配置
# tar -zxvf rsync-2.6.9.tar.gz*编译和安装
# make至此,没有出现什么错误的话,整个手工安装过程就完毕了。
[] ssh的配置在这里的配置,当然不是指如何配置SSH服务啦。而是指配置用来SSH登录相关的帐户的公钥、私钥。
注意: 备份服务器必须运行sshd服务。在A、B两台服务器上各创建一个普通帐户,不需要设置密码。
在FreeBSD下创建帐户:
# pw user add -d /home/mybackup -n mybackup在Linux下创建帐户:
# useradd -d /home/mybackup mybackup这些操作是在同步源服务器,就是有需要做备份数据的服务器。这里是指A主机。
首先,切换到mybackup帐户以及该帐户的用户目录下:
# su mybackup
生成公钥、私钥:
这时候,我们就会得到公钥、私钥两个文件在.ssh目录下。我们查看一下:
其中 id_dsa 是密钥文件,id_dsa.pub 顾名思义,是公钥文件啦。
[] 拷贝到客户端因为我们之前生成的公钥、密钥,都是在源服务器上操作。而客户端(做备份的服务器)上,需要有刚才生 成的公钥,才能不提示输入密码,直接登录ssh。
使用scp来远程拷贝:
$ scp /home/mybackup/.ssh/id_dsa.pub root@192.168.11.11:/home/mybackup/.ssh/authorized_keys如果用户名、密码和文件路径没有错误,在按提示输入192.168.11.11的root密码后,很 快就会把id_dsa.pub文件拷贝过去了。
[] 测试登录将公钥拷贝到客户端后,我们来测试下能不能在源服务器上不用输入密码ssh登录客户端服务器。
$ ssh -l mybackup 192.168.11.11或者:
$ ssh mybackup@192.168.11.11如果没有提示输入密码,就登录到192.168.11.11 服务器,那恭喜你,说明配置成功了。
[] Rsync的配置事实上,我们在利用SSH通道来运行RSYNC时,是不需要配置一个Rsync服务器的。在这里我们 指的配置,是有两方面,一是运行rsync的参数,一是运行同步控制的脚本。
[] Rsync的常用参数rsync 常用的运行参数说明:
-v, –verbose 详细模式输出测试rsync同步,将A主机的/opt/etc同步到B主机的/tmp/myetc目录下:
$ rsync -vzrtopg --progress --stats --delete -e ssh /opt/etc mybackup@192.168.11.11:/tmp/myetc然后到B主机的/tmp/myetc目录下看看,是不是发现一个etc目录,并且这个etc目录下面 的文件,跟A主机的/opt/etc目录下面的文件一样。
[] 控制脚本因为往往备份的目录是相对固定的,如果每次备份都要输入那么长一串,会不会觉得很麻烦呢?那我们写一 个脚本来工作,并且利用crontab来定时定点的执行同步工作。
控制脚本代码如下:
#!/bin/sh
将 rsyncer.sh 脚本保存到
/opt/bin(或者你自己的工作目录)目录下,还要注意保证设置好mybackup用户可以执行的属性。
另外,要注意 /opt/var/log/rsync.log 也必须是mybackup帐户可以读写才行。
[] 运行经过上面的步骤后,可谓万事俱备,只欠运行了。其实也很简单,我们只需要设置crontab,定时执 行备份脚本进行备份就可以了。
$ crontab -e这样,每天凌晨3点,就会自动执行 /opt/bin/rsyncer.sh 进行备份了。
[] 结束语在开源软件里,很多很多很好用而且分文不收的软件。我们合理的利用这些软件,可以为我们带来很多很多 好处。比如,节省成本,提高工作效率等等。
因此,多学习开源软件,是很好的。
作者: Jonsen Yang( 16hot、 杨明茂 )
rsync 备份方案 rsync 镜像备份 配置 rsync 系统环境 [root@linuxas3 root]# uname -a Linux linuxas3.9812.net 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux 安装rsync 在AS3 第二张CD上找到rsync-2.5.6-20.i386.rpm [root@linuxas3 root]# cd /mnt [root@linuxas3 mnt]# mount cdrom [root@linuxas3 mnt]# cd cdrom/RedHat/RPMS [root@linuxas3 RPMS]# rpm -ivh rsync-2.5.6-20.i386.rpm 配置/etc/rsyncd.conf 在rh9,as3系统上rsync安装后,并没有创建rsyncd.conf文档,笔者是自己创建的rsyncd.conf文档 [root@linuxas3 root]# vi /etc/rsyncd.conf uid=nobody gid=nobody max connections=4 use chroot=no log file=/var/log/rsyncd.log pid file=/var/run/rsyncd.pid lock file=/var/run/rsyncd.lock #auth users=root secrets file=/etc/rsyncd.pwd [postfix] path=/var/mail comment = backup mail ignore errors read only = yes list = no auth users = postfix [netkiller] path=/home/netkiller/web comment = backup 9812.net ignore errors read only = yes list = no auth users = netkiller [pgsqldb] path=/var/lib/pgsql comment = backup postgresql database ignore errors read only = yes list = no 选择说明 uid = nobody gid = nobody use chroot = no # 不使用chroot max connections = 4 # 最大连接数为4 pid file = /var/run/rsyncd.pid #进程ID文件 lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log # 日志记录文件 secrets file = /etc/rsyncd.pwd # 认证文件名,主要保存用户密码,权限建议设为600,所有者root [module] # 这里是认证的模块名,在client端需要指定 path = /var/mail # 需要做镜像的目录 comment = backup xxxx # 注释 ignore errors # 可以忽略一些无关的IO错误 read only = yes # 只读 list = no # 不允许列文件 auth users = postfix # 认证的用户名,如果没有这行,则表明是匿名 [other] path = /path/to... comment = xxxxx 密码文件 在server端生成一个密码文件/etc/rsyncd.pwd [root@linuxas3 root]# echo postfix:xxx >>/etc/rsyncd.pwd [root@linuxas3 root]# echo netkiller:xxx >>/etc/rsyncd.pwd [root@linuxas3 root]# chmod 600 /etc/rsyncd.pwd 启动rsync daemon [root@linuxas3 root]# rsync --daemon 测试 [root@linux docbook]# rsync rsync:// [root@linux tmp]# rsync rsync://netkiller@ Password: [chen@linux temp]$ rsync -vzrtopg --progress --delete postfix@ Password: rsync rsync://认证用户@主机/模块 rsync -vzrtopg --progress --delete 认证用户@主机::模块 /mirror目录 添加到启动文件 echo "rsync --daemon" >> /etc/rc.d/rc.local 更复杂的使用,请参考 rsync examples |
rsync启动: 用xinetd启动后绑在 TCP/873 端口 1.修改启动文件: #vi /etc/xinetd.d/rsync # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } 2.#nmap localhost #netstat -antp |grep 873 |
| |||||||||