Debian下rsync配置过程


一、特性简介
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。

算法介绍:
假定在名为α和β的两台计算机之间同步相似的文件 A 与 B ,其中α对文件 A 拥有访问权,β对文件 B 拥有访问权。并且假定主机α与

β之间的网络带宽很小。那么 rsync 算法将通过下面的五个步骤来完成:
1.β将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S  小。
2.β对每一个分割好的数据块执行两种校验:一种是 32 位的滚动弱校验,另一种是 128 位的 MD4 强校验。
3.β将这些校验结果发给α。
4.α通过搜索文件 A 的所有大小为 S 的数据块 ( 偏移量可以任选,不一定非要是 S 的倍数 ) ,来寻找与文件 B 的某一块有着相同的弱

校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
5.α发给β一串指令来生成文件 A 在β上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个

数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。

二、配置步骤
1、系统环境
server: Debian 5.0.5  ip: 192.168.206.120
client: Debian 5.0.5  ip: 192.168.206.200

rsync版本
# rsync --version
rsync  version 3.0.3  protocol version 30

安装
server和client端都需要安装rsync,只不过client端不需要配置:
# apt-get install rsync

2、配置server端的/etc/rsyncd.conf文件
拷贝示例配置文件到/etc目录
#  cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/

查看rsyncd.conf文件,按需要修改即可
# more /etc/rsyncd.conf
# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd
log file=/var/log/rsyncd.log
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=
# MODULE OPTIONS

[www]               # 这里是认证的模块名,在client端需要指定

        comment = source high app archive
        path = /data/webroot/rsynctest  # 需要同步的目录
        use chroot = yes
#       max connections=10
        lock file = /var/lock/rsyncd
# the default for read only is yes...
        read only = no
        list = yes
        uid = www-data
        gid = www-data
#       exclude =
#       exclude from =
#       include =
#       include from =
        auth users = appbackup  # 认证的用户名,如果没有这行,则表明是匿名
        secrets file = /etc/rsyncd.secrets  # 认证密码文件
        strict modes = yes
        hosts allow = 192.168.206.200 #充许任何主机连接
#       hosts deny =
        ignore errors = no  # 可以忽略一些无关的IO错误
        ignore nonreadable = yes
        transfer logging = yes
#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz


3、在server端创建密码文件/etc/rsyncd.secrets
# vi /etc/rsyncd.secrets
  1 ;username:password
  2 appbackup:123456

 

4、在server端将rsync以守护进程形式启动
# vi /etc/default/rsync
RSYNC_ENABLE=true

启动srync
# /etc/init.d/rsync start

查看监听端口
# netstat -anp|grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2533/rsync     
tcp6       0      0 :::873                  :::*                    LISTEN      2533/rsync     

日志信息
# tail -f /var/log/rsyncd.log
2011/01/25 16:40:36 [30371] name lookup failed for 192.168.206.200: Name or service not known
2011/01/25 16:40:36 [30371] connect from UNKNOWN (192.168.206.200)
2011/01/25 08:40:36 [30371] rsync on www/ from appbackup@unknown (192.168.206.200)
2011/01/25 08:40:36 [30371] building file list
2011/01/25 08:40:36 [30371] sent 263 bytes  received 66 bytes  total size 2313891
2011/01/27 08:45:05 [2533] rsyncd version 3.0.3 starting, listening on port 873


5、client端测试
创建密码文件,只填密码即可,密码要与server端的一致。
debian-vm:~# vi /etc/rsyncd.secrets
123456

同步
debian-vm:~# /usr/bin/rsync -vzrtopg --delete --progress appbackup@192.168.206.120::www /data/webroot --password-

file=/etc/rsyncd.secrets
receiving incremental file list
deleting 20101129.csv
./
ip.txt
        2358 100%    2.25MB/s    0:00:00 (xfer#1, to-check=2/7)

sent 81 bytes  received 886 bytes  1934.00 bytes/sec
total size is 2375  speedup is 2.46

参数说明:
-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除

6、crontab定期更新脚本
# more rsync.sh
#!/bin/bash
#列表显示远程的目录
/usr/bin/rsync -vzrtopg --delete --progress appbackup@192.168.206.120::www  --password-file=/etc/rsyncd.secrets
/usr/bin/rsync -vzrtopg --delete --progress appbackup@192.168.206.120::www /data/webroot --password-

file=/etc/rsyncd.secrets

相关内容