rsync介绍:

是一款开源的、快速的、多功能的、全量及增量的本地货远程数据同步备份工具

Rsync的工作方式: 1.单个主机本地local之间的数据传输(类似cp命令) 2.借助rcp,ssh等通道来传输数据(类似于scp) 3.以守护进程(socket)的方式传输数据(rsync自身重要的功能)

使用本地同步备份数据方式:

直接本地同步:相当于cp (cp 源 目标 ) ( rsync 源 目标 )

#保持属性同步: cp -a (-d设备 -p属性同步 -r目录 ) 源 目标 rsync -avz 源 目标 使用rsync删除文件:mkdir /null(创建一个空目录) rsync -r --delete /null/ /data/

使用ssh方式

类似于scp,借用ssh通道来进行传输数据 scp -P52113 -rp /etc/hosts root@172.17.0.105:/tmp rsync -avz -e 'ssh -p 52113' /etc/hosts root@172.17.0.105:/tmp

ps:-e 代表指定使用ssh通道

使用doment方式

一、服务端配置: 1)软件安装:yum install rsync 2)查看软件命令路径:which rsync
3)查看软件版本:rsync -version 或(rpm -qa rsync) 4)创建配置文件:vim /etc/rsyncd.conf

[root@DB2 hzftp]# vim /etc/rsyncd.conf uid = rsync gid = rsync port= 873 address= 172.17.0.112 use chroot = no max connections = 20 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log

[hzftp] path = /var/ftp/hzftp ignore errors read only = false list = false hosts allow = 172.17.0.21/24 hosts deny = 0.0.0.0/32 auth users = backup secrets file = /etc/rsync.pwd



配置文件内容详细讲解:

########################配置文件解释############################ uid = rsync #虚拟用户,需创建 gid = rsync #虚拟用户组 port= 873 #rsync默认的接口 address= 172.17.0.112 #默认自己A服务器端的ip地址 use chroot = no #表示连接成功后是否自动切换目录(yes/no) max connections = 20 #最大连接数 pid file = /var/run/rsyncd.pid #pid文件存放的位置(rsyncd.pid存放路径) lock file = /var/run/rsync.lock #锁文件存放伪装 (rsync.lock存放路径) log file = /var/log/rsyncd.log #日志文件存放位置(rsyncd.log存放路径)

[hzftp] #(模块名)比较重要,rsync客户机同步的时候需要填写 path = /var/ftp/hzftp #服务器上共享目录的位置(一定要存在,如果没有需创建) ignore errors
read only = false #是否只读 list = false #允许列表 hosts allow = 172.17.0.21/24 #允许的主机 (可以是IP也可以是IP段,加,号隔开) hosts deny = 0.0.0.0/32 #不允许的主机 auth users = backup # 备份连接使用的账户(需要创建用户useradd bakcup secrets file = /etc/rsync.pwd # 备份连接使用的账户密码(这里直接新建个文件即可)如下图 #########################结束###############################

5)创建虚拟用户rsync 创建用户(不能登录系统):useradd rsync -s /sbin/nologin 修改path的所有人和所属组:chown -R rsync.rsync /var/ftp/hzftp 创建rsync连接用的认证文件:echo "backup:shuyun2018" >/etc/rsync.pwd 修改rsync认证文件的权限:chmod 600 /etc/rsync.pwd 启用rsync服务:rsync --daemon 查看服务端口netstat -lntup|grep 873 查看服务:ps -ef|grep rsync 检查防火墙以及SELINUX是否关闭:getenforce--查看SELINUX状态 至此,服务端配置结束。

二、客户端配置:(操作一般都是在客户端上进行) 1)登录到客户端首先检查rsync服务是否安装:rpm -qa rsync 2)同样创建连接认证文件:echo "shuyun2018" >/etc/rsync.pwd

ps:客户端上我们只填密码即可,无需填用户名

3)修改认证文件权限:chmod 600 /etc/rsync.pwd 4)标准拉取文件格式:<两种方法拉取>

rsync -avz backup@172.17.0.112::hzftp/test1 /data1 --password-file=/etc/rsync.pwd

rsync -avz rsync://backup@172.17.0.112/hzftp/test1 /data1/ --password-file=/etc/rsync.pwd

ps:从服务器端往客户端上拉取数据

5)标准推送文件格式:<两种方法推送>

rsync -avz /data1 backup@172.17.0.112::hzftp/test1 --password-file=/etc/rsync.pwd

rsync -avz /data1 rsync://backup@172.17.0.112/hzftp/test1 --password-file=/etc/rsync.pwd

ps:从客户端往服务器端推送数据

注意:模块名<hzftp>后可以跟具体文件路径


########################################################

小结:(知识回顾)

rsync server服务端:

1.vim /etc/rsyncd.conf (用户、模块、共享目录、虚拟用户、密码文件) 2.创建共享目录 /var/ftp/hzftp 3.创建rsync用户,授权访问/var/ftp/hzftp 4.创建密码文件,复制配置文件里的路径《文件内容》==(虚拟用户名:密码)

注意操作习惯:/etc/rsync.pwd文件不要加d

5.密码文件权限修改为600 6.启动服务:rsync --daemon成功后放入/etc/rc.local文件(本地开机启动rsync)

注意操作习惯:一定要全路径添加,which rsync 找到路径位置

7.tail /var/log/rsyncd.log

> rsync client客户端:

1.密码文件和服务端没有任何关系。命令时需要 --password-file=/etc/rsync.pwd 内容:密码(不需要用户名) 2.修改/etc/rsync.pwd 600 客户端的密码权限也要降低,安全考虑 排错思路: 1.防火墙和selinux是否关闭 2./var/log/rsyncd/log 3.整个部署流程整体考虑


客户端排除打包操作:

首先我们man rsync 一下然后找到下面这两个选项: --exclude=pattern 使用时直接跟原文件名; --exclude-from=file 将排除的文件名以列的方式输入到一个文件里面,使用时直接使用文件名即可;

排除单个文件: rsync -avz --exclude=a /data1 backup@172.17.0.112::hzftp/test1 --password-file=/etc/rsync.pwd 排除多个文件: 排除文件a和文件f(不连续文件以逗号区分) rsync -avz --exclude={a,f} /data1 backup@172.17.0.112::hzftp/test1 --password-file=/etc/rsync.pwd 排除包含文件a到文件g之间所有文件(连续文件) rsync -avz --exclude={a..g} /data1 backup@172.17.0.112::hzftp/test1 --password-file=/etc/rsync.pwd 排除文件test里所有列出的文件(test里以列区分文件) rsync -avz --exclude-from=test /data1 backup@172.17.0.112::hzftp/test1 --password-file=/etc/rsync.pwd

服务端排除打包操作:(一般不在服务端控制)

#在服务端man rsyncd.conf 搜索exclude 直接在配置文件里面添加一行exclude=a b c (文件名以空格隔开) 杀进程的方法:kill cat /var/run/rsyncd.pid 或(pkill rsync) 启用服务:rsync --daemon