rsync是类Unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了 - remote sync。它的特性如下:

  1、可以镜像保存整个目录树和文件系统。 
  2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 
  3、无须特殊权限即可安装。 
  4、优化的流程,文件传输效率高。 
  5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 
  6、支持匿名传输。

rsync官方网站rsync.samba.org

一、服务器端(192.168.0.2/24)
1、安装
   查看系统是否安装rsync软件包:rpm -qa | grep rsync
   一般系统都默认安装了该软件包,如果没有安装可以从系统盘或者网上的yum源直接安装:yum install -y rsync
2、建立配置文件和认证文件
vi /etc/rsyncd.conf
uid=root           #使用root,有一定的危险性,慎用!
gid=root
max connections=10 #最大连接数
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log
[www] #定义备份模块
path=/var/www #备份的目录
comment=backup www #注释
ignore errors #忽略一些无关的IO错误
read only=yes #只读
list=no #不允许列出文件
auth users=rsync #认证用户名,没有这行表示匿名
hosts allow=192.168.0.2 #允许同步的IP地址
hosts deny=0.0.0.0/32
secrets file =/etc/user.pass #认证文件名

**注意配置真正服务的配置文件里不要有注释,我这里有是方便大家了解***

建立认证文件,并写入认证用户名和密码
echo "rsync:123456" > /etc/user.pass

修改认证文件权限为600,必须是600的权限,否则认证时报错
chmod 600 /etc/user.pass

3、启动rsync服务和自动运行
启动rsync
rsync --daemon

设置自动启动
echo "/usr/bin/rsync --daemon" >> /etc/rc.local

检查rsync服务是否启动成功,查看服务器是否监听tcp873端口
netstat -ntpl | grep 873

二、同步镜像的服务器(192.168.0.3/24)
1、安装和服务器端一样

2、建立备份目录
mkdir /var/backup

3、开始做镜像备份
rsync -vzrtopg --delete --progress --password-file=/etc/user.pass rsync@192.168.0.2::www  /var/backup/www

   上面命令使用了--password-file这个参数,则你本机必须有验证文件,单行保存认证用户的密码即可
echo "123456" > /etc/user.pass

   这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的rsync@ip中,rsync是指定密码文件中的用户名,之后的::www这一www是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/var/backup/www是备份到本地的目录名。
    在这里面,还可以用-e ssh的参数建立起加密的连接。可以用--password-file = /password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了。注意这里密码文件是放在本地的,里的内容是单行的密码。