看完需要总结以下3个问题
1,rsync有几种模式?
2,rsync的socket模式的监听端口号?
3,rsync的限速参数?
rsync 叫做数据同步工具。通常我们用来让数据两头进行同步(须先yum安装)
rsync的第一种模式:本地之间的数据同步(也就是基本模式,增量同步)
一、语法一:rsync 参数 源路径 目标路径 增量同步
参数:-v,--verbose 详细模式输出,传输时的进度等信息
-z,--compress 传输时进行压缩以提高传输效率
-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
(注意:源路径后不加/ 指把整个路径同步到目标路径,
源路径后加/ 指把源路径下的所有内容同步到目标路径
目标路径后,加不加/没区别)
既然说到同步。我们的复制命令cp 也可以同步
我们把一个目录内容复制过去。两头自然就一样了
cp是全量同步,即复制过去后二头内容完全一样(目标路径没东西就复制过去,有东西就强行覆盖,无论怎样二边内容都一样)
rsync是增量同步,同步之前先会进行文件比对:如果我有的你也有我就不复制了;我有的你没有,我才复制给你---把我有而你没有的同步给你,但你有我没有的我不管
例如:路径qqq下有名为1..10的10个文件,www下有名为1..5的5个文件,要求同步www下6..10到www下
正确写法:rsync -avz qqq/ www/ 把qqq下内容同步到www
错误写法:rsync -avz qqq www/ 把文件夹qqq复制到www下
另外,rsync还可以进行完全增量同步:我有的你也有,我就不复制了;我有的你没有,我才复制给你;但是,你有的我没有,我也不让你有,直接帮你删了。
语法:rsync 参数 源路径/ 目标路径/ –delete
例如:路径qqq下有名为1..10的10个文件,www下有名为5..15的10个文件,要求进行完全增量同步:
实操:rsync -avz qqq/ www/ --delete 分别ls后发现二个路径下完全你一样
二、第二种模式:远程同步 需要三步
语法一(增量模式):rsync -avz /源账户路径/ 目标账户名@目标ip:/目标账户路径/ 把我有而你没有的同步给你,但你有我没有的我不管
注意:①源账户路径 和 目标账户路径 均需已安装rsync
②源路径后不加/
源路径后加/
③ip后边有个:
步骤:①rsync -avz /backup/ root@192.168.71.132:/backup/
②输入yes确认 (第一次同步需要输入yes确认,以后就不用了)
③输入对方机器的rooot超户登录密码
意义:将backup目录下所有内容同步到以root超户进行登录192.168.71.132这台机器的back目录下 ls
语法二(完全增量模式):把我有而你没有的同步给你;但同时也把你有我没有的给你删了,这下咱俩里边内容完全一样了
rsync -avz /backup/ root@192.168.71.132:/backup/ --delete
三、第三种模式:socket监听模式 (服务器模式)
服务部署:用rsync做一个程序,监听873服务端口,其他客户端把数据推进服务端口,rsync会自动保存。(客户端可以有多个,不用指定哪个目录,推进端口就行)
在server服务端执行以下指令:
①vim /etc/rsyncd.conf 写rsync的配置文件,原本没有,需要自己写
uid = rsync 可用此服务的账号是rsync
gid = rsync 组账号是rsync
use chroot = no 安全设置:不可以更改root权限
max connections = 200 最大支持连接200个客户端
timeout = 300 连接超时时间300秒
pid file = /var/run/rsyncd.pid pid文件保存位置
lock file = /var/run/rsync.lock 文件锁
log file = /var/log/rsyncd.log 日志保存位置
#############################以上是全局生效参数,以下是模块参数
[backup] 模块名称
path= /backup/ 将模块的存储路径设为/backup
ignore errors 忽略出现的错误错误
read only = false 关闭只读,即可以读写
list = false 关闭客户端查看服务端的权限,即禁止客户端查看服务端
hosts allow=192.168.71.0/24 允许推送到服务端的客户端的网段范围
hosts deny = 0.0.0.0/32 掩码32,即4个255,不拒绝任何ip地址
auth users =rsync_backup
secrets file = /etc/rsync.password
(需要在此路径下创建1个文件,用于存放虚拟账户rsync_backup的密码)
②useradd -M -s /sbin/nologin rsync 创建程序用户rsync
③mkdir /backup 创建指定存放目录,ll -d /backup已存在则正确
④vim /etc/rsync.password 创建存放密码的文件rsync.password
rsync_backup:123456 以 账户名:密码 的格式保存密码 保存退出
⑤chmod 600 /etc/rsync.password 必须把密码文件权限设为600,高了执行不了,且因有密码禁止其他用户查看
ll /etc/rsync.password 查看密码文件权限是否修改成功
⑥ll -d /backup 数据存储目录的属主和属组都是root即权限为755;而rsync是程序用户权限,客户端将数据推进端口后,服务端rsync会收到数据然后写入/backup中,意味着rsync程序应具备写权限而现在写不了,因此要修改/backup目录的属主
chown rsync /backup 将/backup目录的属主更改为rsync,rsyc才能把传入的数据写进此目录
rsync -–daemon 启动(ps -ef | grep -v grep | grep rsync查是否运行)
netstat -antup | grep 873 rsync默认监听873端口
cd /backup 转到服务端根下的backup目录
rm -rf * 清空数据目录 此时服务端已配完
在客户端执行以下指令:
cd /backup/ 转到客户端根下的backup目录
touch {1..10} 创建10个文件
3.1、rsync -avz /backup/ rsync_backup@192.168.71.131::backup
123456 输入之前配置好的虚拟账户rsync_backup的密码123456 显示同步成功(此模式rsync将客户端/backup下的数据推进到192.168.71.131服务器的873端口的/backup模块下,再由这个模块转到指定目录下)
提示:(排错:rsync -avz /backup/ rsync_backup@192.168.71.131::backup同步失败,显示找不到路由器,即网不通;猜测是没关防火墙的问题,随即
service iptables stop 关闭防火墙,再service iptables status发现未运行
再执行rsync -avz /backup/ rsync_backup@192.168.71.131::backup显示让输入服务端密码,则排错成功;建议将服务端和客户端的防火墙都关掉,如下图示)
3.2、免密码同步,(免密同步即可方便将rsync功能写入脚本)
vim /etc/rsync.password 要想免密码,在客户端/backup下也需要创建密码文件
123456 密码文件内只需要写密码就行,此处密码应和服务端创建的虚拟账户密码一致
chmod 600 /etc/rsync.password 将密码文件权限设为600 可用ll验证
rsync -avz /backup/ rsync_backup@192.168.71.131::backup --password-file=/etc/rsync.password 免密码同步 标绿的指定密码参数
3.3、免密码完全增量同步:既要免密码,又要完全增量(使二台机器内容完全同步)
rsync -avz /backup/ rsync_backup@192.168.71.131::backup --password-file=/etc/rsync.password --delete
注意:操作时一定要细心:
1、建议将虚拟机服务端和客户端的防火墙都关掉,避免连接失败
2、避免写错内容导致执行失败
3、在工作中做服务部署时,虽然指令不需要背,但是绝对不能简单照抄,必须知道:
①每一步是做什么的②为什么要这么做③是否有错误步骤④这句话是干什么的⑤是不是必须有的(没有行不行)
因为,部署过程虽然要参考文档,但有的企业有文档但步骤和内容不一定准确,有些企业干脆没文档。