服务器搭建: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来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。