rsync远程同步(理论+实战)
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,关于rsync一款快速增量备份工具Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步官方网站:http://rsync.samba.org配置rsync源服务器rsyn
千家信息网最后更新 2024年11月28日rsync远程同步(理论+实战)
关于rsync
一款快速增量备份工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步
官方网站:http://rsync.samba.org
配置rsync源服务器
rsync同步源
指备份操作的远程服务器,也称为备份源
配置rsync源
基本思路
建立rsync.conf配置文件,独立的账号文件启用rsync的--daemon模式
应用示例
用户backuper,允许下行同步操作的目录为/var/www/html
配置文件rsyncd.conf
需手动建立,语法类似于Samba配置认证配置auth users,secrets file,不加则为匿名
rsync账号文件
采用"用户名:密码"的记录格式,每行一个用户记录独立的账号数据,不依赖于系统账号
启用rsync服务
通过--daemon独自提供服务执行kill $(cat /var/run/rsync.pid)关闭rsync服务
使用rsync备份工具
rsync命令的用法
rsync [选项] 原始位置 目标位置
常用选项
-a:归档模式,递归并保留对象属性,等用于-rlptgoD-v:显示同步过程的详细信息-z:在传输文件时进行压缩-H:保留硬连接文件-A:保留ACL属性信息--delete:删除目标位置有而原始位置没有的文件--checksum:根据对象的校验和来决定是否跳过文件
配置源的两种表示方法
格式1:用户名@主机地址::共享模块名格式2:rsync://用户名@主机地址/共享模块名
rsync实时同步
定期同步的不足
执行备份的时间固定,延迟明显,实时性差当同步源长期不变化时,密集的定期任务是不必要的
实时同步的优点
一旦同步源出现变化,立即启动备份只要同步源无变化,则不执行备份
关于 inotify(安装在发起端的)
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。可以监控文件系统的变化情况,并作出通知响应;辅助软件:inotify-tools
实验环境
rsyncd:192.168.52.134client:192.168.52.148
1、在rsyncd服务器上修改配置文件
[root@rsyncd ~]# rpm -q rsync ##检查是否安装rsync,没有用yum安装rsync-3.0.9-18.el7.x86_64[root@rsyncd ~]# vim /etc/rsyncd.confuid = nobody ##匿名用户gid = nobodyuse chroot = yes ##禁锢家目录pid file = /var/run/rsyncd.pid ##pid文件address = 192.168.13.128 ##监听地址port = 873 ##监听端口号log file = /var/log/rsyncd.log ##日志文件路径hosts allow = 192.168.13.0/24 ##允许地址段访问dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 ##不需要压缩的类型[wwwroot] ##共享模块名path = /var/www/html ##路径comment = www.kgc.com ##定义名称read only = yes ##开启只读auth users = backuper ##身份验证用户名secrets file = /etc/rsyncd_users.db ##密码文件[root@rsyncd ~]# vim /etc/rsyncd_users.db ##创建密码文件backuper:abc123 ##用户名:密码[root@rsyncd ~]# chmod 600 /etc/rsyncd_users.db ##给root用户读写权限[root@rsyncd ~]# rsync --daemon ##开启rsync服务[root@rsyncd ~]# netstat -ntap | grep rsync ##查看端口tcp 0 0 192.168.52.134:873 0.0.0.0:* LISTEN 15471/rsync [root@rsyncd ~]# systemctl stop firewalld.service ##关闭防火墙[root@rsyncd ~]# setenforce 0[root@rsyncd ~]# yum install httpd -y ##安装httpd服务[root@rsyncd ~]# cd /var/www/html/[root@rsyncd html]# echo "this is test web" > index.html ##创建网页信息[root@rsyncd html]# cd ../[root@rsyncd www]# chmod 777 html/ ##给最大权限,方便任意用户操作[root@rsyncd www]# ll ##查看权限总用量 0drwxr-xr-x. 2 root root 6 8月 8 19:42 cgi-bindrwxrwxrwx. 2 root root 24 12月 13 15:11 html[root@rsyncd www]#
2、在客户端服务器上,拉取同步源rsyncd
[root@client ~]# rpm -q rsync ##检查是否安装rsync服务rsync-3.0.9-18.el7.x86_64[root@client ~]# systemctl stop firewalld.service ##关闭防火墙[root@client ~]# setenforce 0[root@client ~]# yum install httpd -y ##安装httpd服务[root@client ~]# cd /var/www/[root@client www]# chmod 777 html/ ##给最大权限[root@client www]# ls -l ##查看去哪先总用量 0drwxr-xr-x. 2 root root 6 8月 8 19:42 cgi-bindrwxrwxrwx. 2 root root 6 8月 8 19:42 html##同步格式一:[root@client www]# rsync -avz backuper@192.168.52.134::wwwroot /var/www/html/##拉取共享模块Password: ##输入密码 ./index.htmlsent 83 bytes received 172 bytes 46.36 bytes/sectotal size is 17 speedup is 0.07[root@client www]# lscgi-bin html[root@client www]# cd html/[root@client html]# lsindex.html[root@client html]# cat index.html ##查看同步情况this is test web[root@client html]# [root@client www]# cat html/index.htmlthis is test web##同步格式二:[root@client html]# rm -rf index.html ##删除同步过来的文件[root@client html]# ls[root@client html]# rsync -avz rsync://backuper@192.168.52.134/wwwroot /var/www/html/##拉取共享模块Password: ##输入密码 receiving incremental file list./index.htmlsent 83 bytes received 172 bytes 72.86 bytes/sectotal size is 17 speedup is 0.07[root@client html]# lsindex.html[root@client html]# cat index.html ##查看同步情况this is test web[root@client html]# ##免交互同步:[root@client html]# rm -rf index.html ##删除同步过来的文件[root@client html]# touch abc.html ##在目录下创建一个abc.html文件[root@client html]# lsabc.html[root@client html]# [root@client html]# vim /etc/server.pass ##创建本地的密码文件abc123[root@client html]# chmod 600 /etc/server.pass ##给权限[root@client html]# [root@client html]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.52.134::wwwroot /var/www/html/##指定本地密码文件,删除目标位置有而原始位置没有的文件,实现免交互receiving incremental file listdeleting abc.html./index.htmlsent 83 bytes received 172 bytes 170.00 bytes/sectotal size is 17 speedup is 0.07[root@client html]# ls ##可以看到,abc.html被删除了,因为加了--delete选项index.html[root@client html]# cat index.html this is test web[root@client html]#
3、在客户机上安装inotify监控
[root@client html]# cd ../[root@client www]# vim /etc/sysctl.conf ##修改内核参数文件fs.inotify.max_queued_events = 16384 ##队列fs.inotify.max_user_instances = 1024 ##每个队列中的实例数fs.inotify.max_user_watches = 1048576 ##每个实例中的文件数[root@client www]# sysctl -p ##加载fs.inotify.max_queued_events = 16384fs.inotify.max_user_instances = 1024fs.inotify.max_user_watches = 1048576[root@client www]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##挂载Password for root@//192.168.100.100/tools: [root@client www]# cd /mnt/tools/inotify/[root@client inotify]# tar xf inotify-tools-3.14.tar.gz -C /opt/ ##解压inotify到/opt下[root@client inotify]# cd /opt/inotify-tools-3.14/[root@client inotify-tools-3.14]# yum install gcc gcc-c++ make -y ##安装环境必要的组件[root@client inotify-tools-3.14]# ./configure ##配置[root@client inotify-tools-3.14]# make && make install ##编译安装[root@client inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/ ##进行监控##重启开启一个客户机的终端[root@client ~]# cd /var/www/html/[root@client html]# lsindex.html[root@client html]# touch abc[root@client html]# rm -rf abc [root@client html]# ##在监控上的客户机上查看/var/www/html/ CREATE abc/var/www/html/ DELETE abc
4、在客户机创建脚本,通过inotifywait触发rsync同步操作脚本
[root@client inotify-tools-3.14]# cd /opt/[root@client opt]# vim inotify.sh#!/bin/bashINOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html/"RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.52.134::wwwroot/"$INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ]; then $RSYNC_CMD fidone[root@client opt]# chmod +x inotify.sh ##给执行权限##确保服务端和客户端的权限都为最大
5、在rsyncd服务器上修改配置文件
[root@rsyncd www]# vim /etc/rsyncd.confread only = no ##关闭只读[root@rsyncd www]# pkill -9 rsync ##关闭[root@rsyncd www]# netstat -ntap | grep rsync[root@rsyncd www]# [root@rsyncd www]# rm -rf /var/run/rsyncd.pid ##删除pid文件[root@rsyncd www]# rsync --daemon ##开启rsync服务[root@rsyncd www]# netstat -ntap | grep rsynctcp 0 0 192.168.52.134:873 0.0.0.0:* LISTEN 50571/rsync [root@rsyncd www]#
6、在客户机上执行inotify脚本文件
##客户端执行脚本[root@client opt]# ./inotify.sh##进入监控状态##重新开启一个客户机终端[root@client ~]# cd /var/www/html/[root@client html]# lsindex.html[root@client html]# echo "this is test" > test.txt ##添加文本##查看监控服务信息[root@client opt]# ./inotify.sh rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]##在rsync服务器上查看[root@rsyncd www]# cd html/[root@rsyncd html]# lsindex.html test.txt ##同步完成##在新开的客户机终端[root@client html]# rm -rf test.txt [root@client html]# lsindex.html[root@client html]# ##在rsync服务器上查看[root@rsyncd html]# lsindex.html[root@rsyncd html]# ##删除也是同步的
文件
同步
服务
客户
用户
配置
密码
备份
服务器
权限
监控
位置
格式
模块
用户名
信息
地址
客户机
脚本
账号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
信息化威胁网络安全
软件开发团队创业文章
淘宝服务器崩了官方回应
软件开发成本度量规范报批
河南帷策互联网科技
大型数据库技术期末突击
数据库实验指导大纲
常州哪里有软件开发培训
杭州未时网络技术公司
刷脸识别的数据库技术
网络安全监督员游戏
应用部署服务器
配电箱管理服务器
爬虫如何开发数据库
郑州的软件开发公司多吗
公安关于网络安全的自查自纠
康康代理服务器
迅雷网络技术公司投资的公司
广州专业的软件开发公司
菏泽华为5g网络技术
与服务器建立连接失败
居民网络安全排查
java数据库敏感字段过滤
深圳触摸屏服务器哪家好
数据库表最大多少数据
数据库两张表的主键是否可以相同
软件开发的广告怎么发
阿联酋国家网络安全主管
软件开发计划分解
新疆有软件开发公司吗