rsync 远程同步

目录

Rsync远程同步

上行同步于下行同步

Rsync功能特点

同步方式

Rsync命令的选项

实验

上行同步


rsync远程同步

|-----------------------------------------------------------------------------|
| 是一个开源的快速备份工具,可以在不同主机之间同步整个目录, 在远程同步中,一个是源端,还有一个是发起端 源端负责文件的原始位置,发起端和源端的文件同步 |
| rsync同步速度很快,适合大文件,可以结合数据库同步使用。 |

上行同步于下行同步

|------|-----------|
| 上行同步 | 从客户端同步到源端 |
| 下行同步 | 从源端同步到客户端 |

Rsync功能特点

|---|-----------------------------------------|
| 1 | 拷贝文件,链接文件,拷贝设备 |
| 2 | 保持源文件或者目录的权限不变,如时间,软硬链接,所有者,所在组等均可以保持不变 |
| 3 | 可以实现增量同步,只同步发生变化的数据,数据传输效率很高 |
| 4 | 支持匿名认证登录 |

同步方式

|---|----------------------------------|
| 1 | 完整备份,第一次同步都是完整备份 |
| 2 | 第一次同步往后的同步,都是增量备份(差异备份),只同步变化的数据 |

Rsync命令的选项

|----------|---------------------------------------------|
| -r | 递归模式,目录包含子目录里面的所有文件 |
| -l | 复制链接文件,软链接 |
| -v | 显示同步过程中的详细信息 |
| -z | 传输文件时对文件进行压缩 |
| -a | 归档模式,可以保留文件的权限,属性等等 |
| -p | 保留文件的权限标记(所有者,所在组) |
| -t | 保留时间标记(时间戳) |
| -g | 保留文件的所在组(需要管理员权限) |
| -o | 保留文件的所有者(需要管理员权限) |
| -H | 保留硬链接 |
| -D | 保留设备文件和其他特殊文件 |
| --delete | 可以删除目标位置有,但是原始位置没有的文件(两边都有的数据保持不动,删除掉不同的数据) |

实验

bash 复制代码
#需要两台:test1 :192.168.233.71,test2:192.168.233.72
systemctl stop firewalld
setenforce 0
yum -y install rsync
#安装rsync软件
vim /etc/rsyncd.conf
uid = root
#所有者
gid = root
#所在组
use chroot = yes
#禁锢在源目录,每一次同步只能从源目录出发
address =192.168.233.71
#监听地址
port 873
#监听端口
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.233.0/24
#指定可以访问服务端的地址
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
#以上述后缀名为结尾的文件,同步时不再压缩

#配置共享模块和目录,用户名,密码
[test]
path = /opt/test
comment = test
read only = yes
#下行模式同步只需要开启yes,为只读模式,上行模式需要读,no为可以读也可以写
auth users = backuper
#指定用户名,可以自定义
secrets file = /etc/rsyncd_users.db
#认证的文件
wq!

vim /etc/rsyncd_users.db
#设置密码文件
backuper:123456
wq!
chmod 600 /etc/rsyncd_users.db
#这个文件只能给600,不能给777
mkdir test
#创建共享目录
chmod 777 test/
rsync --daemon
#独立监听启动,守护进程启动
netstat -antp | grep rsync
#看一下启动没
kill $(cat /var/run/rsyncd.pid)
#关闭rsync进程的方式
touch 123 /opt/test/
echo  666 > 123

test2
systemctl stop firewalld
setenforce 0
yum -y install rsync
rsync -avz backuper@192.168.233.71::test /opt
#rsync发起同步的命令,-avz为保留文件权限,v表示显示详细过程,z同步过程中对文件进行压缩,/opt为指定目录
#输入密码,第一次为全量备份,第二次为增量备份

二免密登录,免交互实现密码登录
test2(客户端)
echo "123456" > /etc/server.pass
#生成一个密码文件
chmod 600 /etc/server.pass
#给权限给密码文件
rsync -avz --pasword-file=/etc/server.pass backuper@192.168..233.71::test /opt
#免密
cat /opt/123

上行同步

bash 复制代码
上行同步 test2
#将软件inotify-tools-3.14.tar.gz 放到/opt
#inotify通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除,移动,修改都可以被监控
#inotify机制和rsync配合使用,既可以通知变化,也可以实现同步
tar -xf inotify-tools-3.14.tar.gz
cat /proc/sys/fs/inotify/max_queued_events 
#16384 ,监控事件队列
cat /proc/sys/fs/inotify/max_user_instances
#128,最多监控的实例
cat /proc/sys/fs/inotify/max_user_watches
#8192,每个实例最多监控的文件
vim .etc/sysctl.conf
#最后添加
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
wq!
sysctl -p
cd inotify-tools-3.14/
./configure
make && make install
inotifywait -mrq -e modify,create,move,delete /opt/test/
#-m表示持续监控,-r递归整个目录,-q简化的输出信息提示,-e指定监控的事件,多个事件用逗号隔开
#开始监控,可以再开一台test2操作,监控有记录表示监控成功。


监控同步数据
mkdir data
touch gq wdf wh yst
chmod 777 data/
rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@192.168.233.71::test/
echo 123 > gq
#test 查看是否同步

#写个监控脚本
vim inotify.sh
#!/bin/bash
CMD="inotifywait -mrq -e modify,create,move,delete /opt/test/"
rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@192.168.233.71::test/"
$CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -gt 0 ]
then
$rsync_cmd
fi
done
wq!
chmod 777 inotify.sh
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc/local
crontab -e -u root
* * */2 * * /opt/inotify.sh
wq!


#在文件数量较多的情况下,比如百万和千万级别的文件,用rm -rf * 速度很慢,用rsync可以实现快速删除大量文件
test1

touch {1..5000}.txt
mkdir /home/blank
rsync --delete-before -a -H -v --progress --stats /home/blank/ /opt/test1
#--delete-before指在传输过程中进行删除,-a归档模式,-H硬连接-v输出过程信息--progress显示传输过程--stats 给出文件的传输状态

cd /home/blank
相关推荐
保持学习ing1 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
发仔1231 小时前
Oracle与MySQL核心差异对比
mysql·oracle
宇钶宇夕2 小时前
EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
运维·服务器·数据库·程序人生·自动化
爱可生开源社区2 小时前
SQLShift 重磅更新:支持 SQL Server 存储过程转换至 GaussDB!
数据库
贾修行2 小时前
SQL Server 空间函数从入门到精通:原理、实战与多数据库性能对比
数据库·sqlserver
傲祥Ax3 小时前
Redis总结
数据库·redis·redis重点总结
椰椰椰耶3 小时前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
一屉大大大花卷3 小时前
初识Neo4j之入门介绍(一)
数据库·neo4j
周胡杰4 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0014 小时前
navicate如何设置数据库引擎
数据库·mysql