Rsync远程同步

rsync概述

1.rsync定义

rsync是一个开源的快速备份工具,可以在不同主机之间同步整个目录树。
在此远程同步任务中,一个是源端,一个是发起端(发起端和源端同步),
源端负责文件的原始位置,发起端和源端的文件同步。

rsync的特点
拷贝文件,连接文件、设备等
可以保持源文件或者目录的权限不变,时间、软硬连接、所有者、所在组等均可以保持不变
可以实现增量同步,即只同步发生变化的数据,数据传输效率很高
可以支持匿名认证

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

2.scp和rsync的区别

功能差距 
rsync远程拷贝可以附带软链接/硬链接。(参数-l 保留软链接,-H 保留硬链接) 

scp不支持链接的拷贝。

效率差异 
简单的解析scp和rsync,前是复制,后是同步。

rsync和scp在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。
原因:scp是复制,若目的地文件不存在则新建,若存在则覆盖。
rsync是同步,比较两边文件是否相同,相同的话,就什么都不做,若存在差异就直接更新。

起到同步的作用时用rsync会快一些,起到复制作用时两者均可(目的地无文件)。视情况来选择rsync或scp。

3.rsync命令选项

格式:rsync [选项] 原始位置 目标位置
选项作用
-r递归模式,目录包含子目录里面的所有
-I复制连接文件,软连接
-v显示同步过程中的详细信息
-z传输文件时,进行压缩
-a归档模式,保留文件的权限、属性等等
-p保留文件的权限标记(所有者、所在组)
-t保留时间标记
-g保留文件的所在组(管理员)
-o保留文件的所有者(管理员)
-H保留硬连接
-D保留设备文件和其他特殊文件
--delete删除目标位置有,但是原始位置没有的文件

实现rsync下行同步

从源端同步到客户端

源端配置

实验配置:
20.0.0.10:源端
20.0.0.20:客户端(发起端)
systemctl stop firewalld
setenforce 0
 ​
rpm -q rsync      #一般系统已默认安装rsync
 ​
#建立/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf           #添加以下配置项
uid = root
gid = root
use chroot = yes              #禁锢在源目录
address = 20.0.0.10           #监听地址
port = 873            #监听端口tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log     #日志文件位置
max connections = 4
pid file = /var/run/rsyncd.pid     #存放进程ID的文件位置
hosts allow = 20.0.0.0/24          #允许访问的客户机地址。多个地址以空格分隔
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z  #同步时不再压缩的文件类型
 ​
[test]                             #共享模块名称
path = /opt/test                  #源目录的实际路径
comment = test
read only = yes          #是否为只读。yes表示客户端只能读取目录内容,不能写入。只允许下行,不允许上行。
auth users = backuper    #授权账户,多个账号以空格分隔。授权用户,允许读取的用户名。
secrets file = /etc/rsyncd_users.db
#存放授权账户信息的数据文件
#如采用匿名的方式,只要将其中的“auth users"和“secrets file"配置项去掉即可。

#为备份账户创建数据文件。
vim /etc/rsyncd_users.db
backuper:123456       #无须建立同名系统用户。backuper为用户名,123456为密码。
​
chmod 600 /etc/rsyncd_users.db
cd /opt
mkdir test
chmod 777 test
mkdir -p /var/www/html​
rsync --daemon
#启动rsync 服务,以独立监听服务的方式(守护进程)运行

netstat -anpt | grep rsync
​
#关闭rsync服务
kill $(cat /var/run/rsyncd.pid)
或者
rm -rf /var/run/rsyncd.pid

同步测试

源端:
cd /opt/test/
touch 123 456 789
echo 123 > 123
echo 456 > 456
echo 789 > 789

发起端配置

#将指定的资源下载到本地/opt目录下进行备份。密码123456
​
rsync -avz backuper@20.0.0.10::test /opt/
#rsync:发起同步的命令
#-avz:保留文件权限,显示详细过程,同步过程中对文件进行压缩
#backuper指的是我在同步的时候用的哪个用户身份
#20.0.0.10::test中test为模块名称
#/opt/指的是同步到本地的目录​

#源端:
touch 000
echo 000 > 000

发起端免密登录

#发起端:
echo "123456" > /etc/server.pass
chmod 600 /etc/server.pass

#源端:
echo 456 >> 456

#发起端:
rsync -avz --password-file=/etc/server.pass backuper@20.0.0.10::test /opt

实现rsync上行同步

发起端配置

cd /opt/
--拖入inotify工具压缩包--
tar -xf inotify-tools-3.14.tar.gz 
cat /proc/sys/fs/inotify/max_queued_events           #监控时间队列
cat /proc/sys/fs/inotify/max_user_instances          #最多能监控的实例数
cat /proc/sys/fs/inotify/max_user_watches            #每个实例最多监控的文件数

#inotify:
通知接口,可以用来监控文件系统的各种变化情况,文件存取、删除、移动、修改都可以被监控
inotify机制和rsync配合在一起使用。既可以通知变化,也可以实现同步。

vim /etc/sysctl.conf
--添加--
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

sysctl -p

cd inotify-tools-3.14/
./configure
make && make install
cd /opt/
mkdir test
inotifywait -mrq -e modify,create,move,delete /opt/test/
#-m:表示持续监控
#-r:递归整个目录
#-q:信息提示
#-e:指定监控的事件,多个事件逗号隔开

#发起端再开一个终端进行操作

实现同步到源端

#发起端:
cd /opt/
mkdir data
cd data/
touch one two three
cd ..
chmod 777 data/
rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@20.0.0.10::test/

脚本实现监控和上行同步结合

#发起端:
cd /opt/
vim inotify.sh
--
#!/bin/bash
CMD="inotifywait -mrq -e modify,create,move,delete /opt/data"
rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@20.0.0.10::test/"
$CMD | while read DIRECTORY EVENT FILE
do 
  if [ $(pgrep rsync | wc -l) -le 0 ]
  then $rsync_cmd
  fi
done
--

bash -x inotify.sh
chmod 777 inotify.sh
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
crontab -e -u root
* * * * * /opt/inotify.sh

验证:

实现rsync快速删除大量文件

#建立空空目录
mkdir /home/blank

#创建文件
cd /opt/
mkdir test1
touch {1..50000}.txt
rsync --delete-before -a -H -v --progress --stats /home/blank/ /opt/test1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值