服务器搭建:http://www.linuxidc.com/Linux/2016-10/136143.htm

环境:公司有A服务器和B服务器,现在需要把A服务器的数据每天自动同步到B服务器上。

那就需要在A服务器上搭建rsync服务。

注意:两个服务器上时间要同步,所以需要都安装ntp时间服务器。

yum  -y  install rsync  ntp

systemctl enable  ntpd

systemctl start  ntpd

systemctl enable  rsyncd

systemctl start  rsyncd

编辑配置文件

vim /etc/rsyncd.conf

port = 873

uid = root

gid = root

use chroot = no                            默认为yes,在传输文件之前首先 chroot 到 path 参数所指定的目录下;优点,安全;缺点,需要 root 权限,不能备份指向 path 外部的符号连接所指向的目录文件

max connections = 0                    最大并发连接数,0为不限制

log file = /var/log/rsyncd.log

lock file = /var/run/rsyncd.lock

transfer logging = yes

timeout = 900

##模块

[backup]                                           //此名字即客户端使用rsync来同步的路径

path = /home

ignore errors

auth users = jrl                                 //客户端获取文件的身份此用户并不是本机中确实存在的用户

read only = no                                  是否可以上传文件到服务器

write only = no                                 是否可以下载

exclude = ruanjian/  qiyewenhuabu/

注:exclude是排除的意思,要把/home目录下的easylife和samba排除在外; easylife/和samba/目录之间有空格分开

secrets file = /etc/rsyncd.passwd           //用来认证客户端的秘钥文件格式 USERNAME:PASSWD 此文件权限一定需要改为600,且属主必须与运行rsync的用户一致。

hosts allow = 192.168.20.26

hosts deny  = *

list = false                                list --指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。默认为 true,显示

创建密钥文件

echo "jrl:jrl16888" > /etc/rsyncd.passwd            //文件用户名和路径为上面定义,别写错,密码自己定

重启服务

systemctl restart  rsyncd

客户端

echo 'jrl16888' >> /etc/rsyncd.passwd     //注意这里只需要服务器rsyncd.passwd 中的密码

chmod 600 /etc/rsyncd.passwd

设置定时同步计划

crontab -e

0 2  * * *  rsync -auv --delete --password-file=/etc/rsyncd.passwd   jrl@192.168.20.21::backup   /home

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

rsync有六种不同的工作模式:


  1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。

  2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。

  3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。

  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。

  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。

  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

注意:源地址在前,目的地址在后。

       1. rsync     [OPTION]...     SRC [SRC]...                       [USER@]HOST:DEST 

  2. rsync     [OPTION]...     [USER@]HOST:SRC         DEST 

  3. rsync     [OPTION]...     SRC [SRC]...                       DEST 

  4. rsync     [OPTION]...     [USER@]HOST::SRC        [DEST] 

  5. rsync     [OPTION]...     SRC [SRC]... [USER@]HOST::DEST 

  6. rsync     [OPTION]...     rsync://[USER@]HOST[:PORT]/SRC [DEST]

  

  rsync中的参数

        -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);

   -r 是递归 

   -l 是链接文件,意思是拷贝链接文件;

        -p 表示保持文件原有权限;

        -t 保持文件原有时间;

        -g 保持文件原有用户组;

        -o 保持文件原有属主;

        -D 相当于块设备文件;

   -z 传输时压缩;

   -P 保留那些因故没有完全传输的文件,以是加快随后的再次传输

   -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

   -e ssh的参数建立起加密的连接。

  -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

  --progress是指显示出详细的进度情况

  --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

  --password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。