rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。

第一种:依赖ssh服务同步目录

rsync -aSvH /home/N22/test1/* /home/N22/test2/

参数解释:

a 等同于 -rlptgoD 归档模式,就是保持文件所有属性、权限不变
S 有效的处理零散文件
v verbose模式
H 保持hard links

上面这个表示 将本机的/home/N22/test1/目录下所有的文件,同步到/home/N22/test2/目录下。这种方式我只能同步新增和更新,不能同步删除,不知道原因,修改为

rsync -aSvH –delete /home/N22/test1/* /home/N22/test2/

时,虽然添加了delete仍然不能同步删除的文件。

和其它服务器同步时,需要账户和密码:rsync -aSvH /home/* root@192.168.1.1:/home/

第二种:服务器和客户端

经过测试,这种服务器和客户端的配置能完美解决删除文件和目录的同步功能。

服务器端配置:

1、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}

2、接下来编辑配置文件

[root@mailsvr ~] # vi /etc/rsyncd.conf
uid = nobody

gid = nobody

use chroot = no

max connections = 4

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

[web]

path = /opt/web

ignore errors

read only = true

list = false

hosts allow = 192.168.0.5  # 允许的IP地址

hosts deny = 0.0.0.0/32    # 禁止的IP 地址

auth users = backup        # 认证用户名,此例是 backup

secrets file = /etc/backup.pass #认证用户的密码文件

3、编辑服务器的密码文件 /etc/backup.pass

vi /etc/backup.pass

backup:123456

4、然后设置权限chmod 400 /etc/backup.pass

客户端配置

1. 编辑rsync连接时的密码文件 /etc/rsync_client.pass

vi /etc/rsync_client.pass

123456                    # 只需要配置连接时使用的密码即可,必须与A服务器上定义的密码相同.

2. chmod 600 /etc/rsync_client.pass

3. 使用 rsync 命令连接服务器,实现文件同步

rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.passbackup@192.168.1.2::web /opt/test

4. 使用 –execlude= 排除不需要同步的文件后缀名

rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.tmp”backup@192.168.1.2::web /home/test

5. 使用 –execlude-from= 排除不需要同步的目录

rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude-from=/opt/pcdir backup@192.168.1.2::web /home/test

6、定时同步

#vi rsyncd.sh

rsync -aSvH  –delete –password-file=/home/N22/rsync_client.pass backup@192.168.1.252::web /home/N22/test2/

#crontab -e
01 04 * * * /etc/rsyncd.sh
每天凌晨4点01分执行