第9课:Rsync文件同步

什么是rsync?
rsync是实现文件同步的工具,甚至是不同操作系统的文件同步,如果是windows的话,需要windows版本cwrsync
现在很多网盘,比如dropbox之类的其实就是用的rsync

rsync特性
能用rsh、ssh 或直接端口做为传输入端口;
支持匿名rsync同步文件,是理想的镜像工具

架设rsync服务器

[1]安装:
# sudo apt-get  install  rsync  注:在debian、ubuntu 等在线安装方法;
# yum install rsync    注:Fedora、Redhat 等在线安装方法;
# rpm -ivh rsync       注:Fedora、Redhat 等rpm包安装方法;
源码包安装
tar xvf  rsync-xxx.tar.gz
cd rsync-xxx
./configure --prefix=/usr/local/rsync#安装目录
make && make install #注:在用源码包编译安装之前,要安装gcc等编译工具

[2]配置
rsync的主要有以下三个配置文件
rsyncd.conf(主配置文件) rsyncd.secrets(密码文件) rsyncd.motd(rysnc服务器信息)
操作步骤:
#touch /etc/rsyncd.conf  #创建rsyncd.conf,这是rsync服务器的配置文件。
#touch /etc/rsyncd.secrets  #创建rsyncd.secrets,这是用户密码文件。
#chmod 600 /etc/rsyncd/rsyncd.secrets  #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
#touch /etc/rsyncd.motd

#vi /etc/xinetd.d/rsync
service rsync
{
        disable = no  #把原来的YES改成NO
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
随系统启动RSYNC
#chkconfig rsync on

2.1 配置主配置文件
#vi /etc/rsyncd.conf

全局参数
uid = root   //运行RSYNC守护进程的用户
gid = root   //运行RSYNC守护进程的组
use chroot = no  //不使用chroot
max connections = 4  // 最大连接数为4
strict modes =yes //是否检查口令文件的权限
port = 873   //默认端口873

模块参数
[backup]                   //这里是认证的模块名,在client端需要指定
path = /home/backup/        //需要做镜像的目录,不可缺少!
comment = This is a test       //这个模块的注释信息
ignore errors                //可以忽略一些无关的IO错误
read only = yes              // 只读
list = no                   //不允许列文件
auth users = hening             //认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.secrets           //密码和用户名对比表,密码文件自己生成
hosts allow = 192.168.1.1,10.10.10.10      //允许主机
hosts deny = 0.0.0.0/0                   //禁止主机
#transfer logging = yes
 
注释:下面这些文件是安装完RSYNC服务后自动生成的文件
pid file = /var/run/rsyncd.pid      //pid文件的存放位置
lock file = /var/run/rsync.lock     //锁文件的存放位置
log file = /var/log/rsyncd.log      //日志记录文件的存放位置

2.2 配置rsync密码
#vi /etc/rsync.secrets
例子:
godeye:123456

3.重启让配置生效
#service xinetd restart

[3]启动rsync server
1 启动rsync服务端(独立启动)
#/usr/local/rsync –daemon
2 启动rsync服务端(通过xinetd超级进程启动)
# /etc/rc.d/init.d/xinetd reload

4.设置开机自启动
#vi /etc/rc.local
加入一行/usr/local/rsync –daemon

5.检查rsync是否正常启动
#netstat -a | grep rsync
或者
#ps aux|grep rsync

6.使用
rsync [OPTION]... [USER@]HOST::SRC  [DEST]              #从RSYNC SERVER备份文件到本地机器
rsync [OPTION]... SRC [SRC]...      [USER@]HOST::DEST   #从本地机器备份文件到RSYNC SERVER 
例子:
从SERVER端取文件
/usr/bin/rsync -vzrtopg --progress --delete godeye@192.168.0.217::backup /home/backup --password-file=/etc/rsync.secrets
向SERVER端上传文件
/usr/bin/rsync -vzrtopg --progress --password-file=/root/rsync.secrets  /home/backup godeye@192.168.0.217::backup
这个命令将把本地机器/home/backup目录下的所有文件(含子目录)全部备份到RSYNC SERVER(172.20.0.6)的backup模块的设定的备份目录下
请注意如果路径结束后面带有"/",表示备份该目录下的东东,但不会创建该目录,如不带"/"则创建该目录

7.设置自动同步,自动运行
vi /usr/local/rsync/time.sh     //制作同步文件脚本
文件内容
#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete godeye@192.168.0.217::backup /home/backup --password-file=/etc/rsync.secrets

crontab -e
加入:10 * * * * /usr/local/rsync/time.sh        //每10分运行一次time.sh脚本文件

8.权限设置
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP
如此, 只有11.22.33.44这个IP能进入这台rsync server