rsync工具简介
 
    rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。
 
下面所讲的简单的rsync同步方法,依赖于SSH服务。一般rsync,ssh软件包都会默认安装的。检查方法:rpm -qa|grep -i rsync
 
注意:在实行备份方案前请用其他目录进行测试以防错误,切记!!
 
[root@mailsvr ~]# rsync -aSvH /home/* root@192.168.1.2:/home/
 
提示输入192.168.1.2机器的root用户密码,输入即可开始同步。
 
参数解释:
a 等同于 -rlptgoD 归档模式,就是保持文件所有属性、权限不变
S 有效的处理零散文件
v verbose模式
H 保持hard links
 
上面这个表示 将本机的/home目录下所有的文件,同步到192.168.1.2机器的/home目录下。。
上面红色标记是源文件位置 蓝色标记是目的位置
 
如果想每次同步之后,两边的文件保持一致,需要添加参数--delete,添加这个参数时,一定要注意测试,否则会造成严重后果,删除了数据。
 
[root@mailsvr ~]# rsync -aSvH --delete /home/* root@192.168.1.2:/home/

 
[root@mailsvr ~]# rsync -aSvH root@192.168.1.2:/home/* /home/
上面这条表示,将远程机器192.168.1.2机器上的/home目录下所有的文件,同步到本地的/home目录下,同步的时候注意源和目的,前面的是源文件位置,后面的目的文件位置
 
上面的命令,执行的时候,需要输入192.168.1.2机器的root用户密码,这样很烦,可以两台机器做个ssh信任,省去每次输入密码,在添加crontab自动执行。自动同步数据。
 
下面是2台主机建立ssh信任
A机器 192.168.1.1
B机器 192.168.1.2
 
[root@mailsvr ~]# ssh-keygen -t rsa      创建证书
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
65:4a:68:cc:6c:23:2b:04:1a:3c:ee:d7:af:e7:e3:8d
root@mailsvr
[root@mailsvr ~]#
然后把公匙传到B机的/root/.ssh中:
[root@mailsvr .ssh]# scp /root/.ssh/id_rsa.pub
root@192.168.1.2:/root/.ssh/authorized_keys
root@192.168.1.2's password:
id_rsa.pub                            100%  219     0.2KB/s  
00:00
[root@mailsvr .ssh]#
 
验证一下,ssh登陆到B机,是否不需要输入密码,如果不用则建立成功
[root@mailsvr .ssh]# ssh 192.168.1.2
Last login: Fri Jun  6 09:59:28 2008 from 192.168.1.1
[root@mailsvr ~]#
 
 
下面是rsync的另一种方法,服务器端和客户端使用。
 
两台机器都需要安装软件包,这里不罗嗦了。
 
服务器端配置:

rysnc一般是通过xinetd进行启动的。
修改/etc/xinetd.d/rsync,只修改一个地方
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = yes  修改为disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
 
接下来编辑配置文件
[root@mailsvr ~] # cat /etc/rsyncd.conf
uid = root   #root用户访问
gid = root   #root组用户访问
use chroot = no     #不能使用chroot
max connections = 9  #最大连接数
list = yes   #允许列出文件清单
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow  = 192.168.1.2   #只允许这个主机访问
 
[data]     #发布项
path = /home/data/     #发布的路径
ignore errors
read only = yes   #只读
auth users = root   #认证用户为root
secrets file = /etc/sery.pass    #密码文件
------------------------------------------------------------------------------------
下面是密码文件
[root@mailsvr ~] # cat /etc/sery.pass
root:123456
权限为600
 
服务器端配置完成,客户端只需要安装rsync包即可
接下来创建密码文件
[root@mailsvr ~] # cat /etc/sery.pass
123456        #这里只需要输入服务器端密码文件中定义的密码即可。
 
使用命令开始同步
 
[root@mailsvr ~] #  rsync -aSvH --password-file=/etc/sery.pass root@192.168.1.2::data  /home/
 
解释:
--password-file=/etc/sery.pass  这段是密码文件,如果不加这段,需要手动输入服务器端定义好的密码。
root@192.168.1.2::data   这里的:data是服务器端的发布项。
 
如果文件比较大,可以使用nohup将进城放在后台执行,
[root@mailsvr ~] #  nohup rsync -aSvH --password-file=/etc/sery.pass root@192.168.1.2::data  /home/ >rsync.log &
 
上面的表示将远程机器192.168.1.2机器上发布的data目录,同步到本地机器的/home/目录下。
 

本文出自 “在晴朗的天空下” 博客,请务必保留此出处http://chenzhuo.blog.51cto.com/150592/269530