linux下使用rsync实现目录同步

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

实现目标:
服务器A与服务器B同步备份,这里只说明服务器A同步到服务器B,服务器B还原到服务器A。
考虑安全因素,使用普通用户进行同步。
使用cronjob,定时同步。

A 服务器上/opt/web 目录,与B客户端服务器上/opt/web目录实现同步。即:B主动与A进行同步。(A的文件会同步到B机器上)
OS: Reaht AS4
A Server  192.168.0.100 /opt/web
B Server  192.168.0.60 /opt/web

一.  A Server config

1.安装服务
yum install xinetd
yum install rsync
2. vi /etc/xinetd.d/rsync  修改 disable =yes 为 disable =no ,修改后的文件如下
# 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            = backup
server          = /usr/bin/rsync
server_args     = –daemon
log_on_failure  += USERID
}

3. 编辑主要配置文件/etc/rsyncd.conf (不存在则自己创建)
vi /etc/rsyncd.conf
uid = backup
gid = backup
use chroot = no                   # 不使用chroot
max connections = 4              # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log        # 日志记录文件
[web]                                 # 这里是认证的模块名,在client端需要指定
path = /opt/web                      # 需要做镜像的目录
ignore errors                        # 可以忽略一些无关的IO错误
read only = true                      # 只读
list = false                          # 不允许列文件
hosts allow = 192.168.0.0  # 允许的IP地址
hosts deny = 0.0.0.0/32    # 禁止的IP 地址
auth users = backup        # 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/backup.pass  #认证用户的密码文件 认证文件名
4. 编辑服务器的密码文件 /etc/backup.pass,文件只能有可读权限 400
vi /etc/backup.pass         #文件格式如下
backup:123456
chmod 400 /etc/backup.pass
5.启动服务
首次启动rsync
rsync –daemon –config=/etc/rsyncd.conf
如果提示
failed to create pid file /var/run/rsyncd.pid: File exists
使用指令
rm -rf /var/run/rsyncd.pid
用以下命令查看rsync是否已经运行:netstat -an|grep 873
[root@localhost web]# netstat -an|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN
tcp        0      0 :::873                      :::*                        LISTEN
重启已经在运行的rsync
[root@mail video]# ps -ef | grep rsync
root     27284     1  0 10:26 ?   00:00:00 rsync –daemon –config=/etc/rsyncd.conf
root     30516 29986  0 18:35 pts/3    00:00:00 grep rsync
[root@mail video]# kill -9 27284
[root@mail video]# rsync –daemon –config=/etc/rsyncd.conf
service xinetd restart,重启 xinted 服务
rsync 系统自带, 需要使用 –deamon 方式进行启动,服务端口是 TCP 873
rsync –deamon –config=/etc/rsyncd.conf
如果要在启动时把服务起来,有几种不同的方法,比如:
a、加入inetd.conf
编辑/etc/services,加入rsync   873/tcp,指定rsync的服务端口是873
编加/etc/inetd.conf,加入rsync  stream  tcp   nowait  backup  /bin/rsync rsync –daemon
b、加入rc.local
在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync –daemon加载进去。

二. B Server  config
1.  yum install rsync  安装rsync服务
2. 创建rsync连接时的密码文件/etc/rsync_client.pass,所放目录自己随意安排,文件权限为只读400
vi /etc/rsync_client.pass #文件格式如下:
123456                    #只需要配置连接时使用的密码即可,必须与A服务器上定义的密码相同.
chmod 400 /etc/rsync_client.pass
3. 使用 rsync 命令连接服务器,实现文件同步
rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass backup@192.168.0.100::web /opt/web
PS:目录同步时要保存相同的文件属主信息,需要在B服务器上创建相同的用户
rsync -qcazrtopgl –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.gz” –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web
backup为认证用户名;
192.168.0.100为服务器端IP;
Web为模块名;
/opt/web 为本地的目录
三.定时任务
[root@localhost admin_backups]# vi backup.sh
内容如下:
#/bin/sh
rsync -qcazrtopgl –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.gz” –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web
添加定时任务:
[root@localhost admin_backups]# crontab –e
添加以下内容:
*/1 * * * * /home/admin/admin_backups/backup.sh > /dev/null 2>&1
每个一分钟从服务器A同步到服务器B!
4. 使用 –execlude= 排除不需要同步的文件后缀名
rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.tmp” backup@192.168.0.100::web /opt/web
5. 使用 –execlude-from= 排除不需要同步的目录
[root@localhost opt]# rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web
/opt/pcdir 文件的内容如下
cat /opt/pcdir
temp/
参数说明
-vzrtopg里的
v是verbose,
z是压缩,
r是recursive,
topg都是保持文件原有属性如属主、时间的参数
—-progress
是指显示出详细的进度情况
–delete
是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
–exclude=”*.tmp”               不包含某些文件
–execlude-from=        排除不需要同步的目录
/opt/web/
指定CLIENT端存放镜象目的路径

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注