RSYNC 简介
rsync 是一个远程同步,是一个开源的快速安全高效的异地备份工具,可以在不同的主机之间镜像同步整个目录树,支持增量备份,有保持链接和权限功能,且采用优化的同步算法,传输前执行压缩。因此非常适合异地备份,镜像服务等应用,也减少了对外暴露的软件,减少了对外暴露的端口,也减少了网络的开销
RSYNC生产场景
1、用于数据异地备份
2、用于WEB集群中节点数据的批量更新,来保持数据的一致性
3、用于yum服务器与互联网镜像站软件同步
rsync服务角色
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync,同步操作服务器为备份源(同步源),同步源负责提供文挡的原始位置,发起端应对该位置具有读或写权限
二、配置rsync备份源,
rsync,作为同步源是以守护进程运行的,为其他客户机提供备份源,同步源要建立配置文件/etc/rsyncd.conf.
首先第一步要建立/etc/rsyncd.conf 配置文件
第二步:为备份账户创建数据文件
第三步:启动rsync服务进程
首先检查一下xshell是否有这rsync的安装包,没有的话就去安装一下
为了更好的确认我将我的主机名更换名字叫服务端
建立配置文件/etc/rsync.conf,
[root@sai ~]# vim /etc/rsyncd.conf uid = nobody (程序用户名) gid = nobody (组名) use chroot = yes (禁锢在源目录, address = 192.168.200.100 (监听地址) oprt = 873 (监听端口) log file = /var/log/rsyncd.log (日志文件位置) pid file = /var/run/rsyncd.pid (存放进程ID文件位置) hosts allow = 192.168.200.0/24 (允许访问的客户端地址) [wwwroot] (共享模块名 随机起名字必须带扣号) path = /var/www/html (源目录的实际路径) comment = Document Root os ww.linuxu.com (描述信息 基本没啥用) read only = no (不为只读) dont compress = *.gz *.bz2 *.tgz *.rar *.z (同步时不再压缩的文件类型) auth users = fuwu(备份授权用户) secrets file = /etc/rsyncd_users.db (存放账户信息、密码的数据文件)没有的话就是匿名操作 |
为了安全考虑,对于rsync的备份源最好仅允许只读,若要匿名方式去备份可以将后两行删掉就可以了
第二步,备份账户创建数据文件,密码信息在文件中以明文的方式存放,为了避免信息泄露还需要调整权限
注意:存账户密码信息得需要与rsync的配置文件相呼应
备份用户fuwu也需要对/var/www/html/有相应的读取权限,
3、启动rsync的服务名为rsync --daemon,要关闭srync服务可以采用kill或者 killall
当出现这个问题的时候之间将/var/run/rsycd.pid删掉就可以了
因为启动需要创建/var/run/rsycd.pid,但是启动的时候已经有这个文件了只需要删掉就可以了
这些基本上就配置完了
下一步来使用备份工具,这时需要再开一台机器, 我把名称改为kuhu机
跟大家分享一下rsync的命令格式,和备份选项
rsync的命令格式及备份选项
命令格式:rsync [选项] 原始位置 目标位置
-r:递归模式,包含目录及子目录中所有文件,
-l:对于符号链接文件仍然复制为符号链接文件。
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)·
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
-a:归档模式,递归并保留对象属性,等同于-rlptgoD结合
-v:显示同步过程的详细( verbose)信息
-z:在传输文件时进行压缩( compress) (传输过程中是压缩的到101客户机就会自动解压)
-H:保留硬连接文件·
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件。
--checksum根据对象的校验和来决定是否跳过文件。
有两种备份方式:
下行备份操作:备份源对应 “原始位置”
上行备份操作:备份源对应 “目标位置”
操作实例
首先在fuwu机器创建一个文件 /var/www/html
这就是传输过去了 注意:输入的创建密码就是在/etc/rsyncd_users.db/ 为pwd123
为大家解释一下命令吧:将fuwu110机器的文件 备份到当前主机/root/下
再来看一下是否到了客户本机/var/www/html/
再来一次实例,在fuwu机器上在root下创建文件123
再来看kehu机
四、编写rsync自动备份方案
实际生产环境中的备份工作通常是按计划重复执行的,例如:每天晚上22:30对服务器的网站目录做一次同步,定期任务可结合shell和l crond,服务来完成
通过export RSYNC_PASSWORD(专门给rsync的变量)变量保存密码,rsync命令执行时可以自动读取该变量的值,在需要时发送给rsync,服务器来进行验证
首先操作一下无交互模式 还是一样在kehuji操作
unset RSYNC_PASSWORD (取消变量)为了方便下方测试我就不跟大家输入这个命令了
在fuwu机创建一个文件
这时kehu机不用输入密码就直接输入命令将文件东西传输过来
忘了给大家分享rsync使用--delete用法,--delete::删除目标位置有而原始位置没有的文件。
这次先是kehu机
再来看一下服务机 fuwu机我创建了一个444
这时发现我的kehu机下/var/www/html/没有了777 大家可以从上边图片对比一下
2、用变量的方法对客户机来说是不安全,密码是可以看的到的
通过--password-file 选项指定存储密码文件
在客户机实例来操作
为了保护自己密码安全,修改权限仅自己观看
将当前的/etc/fuwu.pass 传输给fuwu机
开始自动备份每天晚上22:30对服务器的网站目录做一次同步,定期任务可结合shell和l crond,服务来完成
基本上就完成了
五、可以写入脚本来同步 目前这是监控了一个
首先在kefu机器写一个脚本 如果想让110和109进行同步往第二行加入--delete
[root@kehu html]# vim /opt/inotify.sh
给脚本加一个执行的权限
给一个程序用户的属主属组
启动脚本实施监控
此时我们再开一个kuhu主机ip也是109
在新的109先创建目录
再查看109情况是否同步过去
再来看110是否被同步 有abbc证明同步了
实现多个监控
这时我们转变策略,如果监控3个客户端而3个客户端都需要配置rsync的文件这时我们可以转变为ssh协议
rsync -avz backuper@192.168.200.109::wwwroot /root/
rsync -avz 192.168.200.109:/root/
大家可以对比一下两个一个有双:: 一个是:
而双::走的rsync的协议 这时监控每个机器,而每个机器都需要下载rsync 并且配置rsync文件
而单:走的ssh协议 这时每个客户机都不需要更改rsync配置文件 只需要下载rsync文件就可以了
下面我给大家实例一下
下面我新增了一个机器并且下载rsync软件包
先从109生成一下公钥
将公钥导入110机器和101服务机器
这时会让你输入110机器的密码也就是root密码
首先就是编写咱们的脚本了,第一步要监控同一个目录
这时需要来重启rsync
kehu机也需要创建目录并于脚本相同
启动他并开始实施监控
第一次玩csdn 我的分享到此结束 哪有写的不好的请各位哥哥姐姐们发出评论帮我纠正 谢谢!!