Rsync简介
Rsync 是一款开源的,快速的,多功能的,可实现全量及增量(差异化备份)的本地或远程数据同步备份的优秀工具.
Rsync软件适用于Unix、Linux、Windows等多种操作系统.
1)可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝;
2)rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据;
3)利用rsync还可以实现删除文件和目录的功能.相当于rm;
4)rsync相当于scp,cp.rm但是还优于他们每一个命令;
在同步备份数据时,默认情况下rsync通过独特的“quick check” 算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以是根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据.
Rsync特性
速度快
初次同步时, rsync会全量拷贝从源文件或目录到目标位置. 第二次往后同步时, rsync 仅仅会拷贝变化的数据块或字节到目标位置这将使得文件传输非常迅速.
安全
rsync 可以使用ssh协议加密传输.
占用带宽少
rsync 在发送时会压缩数据块, 接收后再解压缩数据块. 所以和其他文件传输协议比起来, rsync在跨主机传输文件时会占用较小的带宽.
不需要特殊权限
安装和运行rsync 不需要特殊权限.
初次同步时, rsync会全量拷贝从源文件或目录到目标位置. 第二次往后同步时, rsync 仅仅会拷贝变化的数据块或字节到目标位置这将使得文件传输非常迅速.
安全
rsync 可以使用ssh协议加密传输.
占用带宽少
rsync 在发送时会压缩数据块, 接收后再解压缩数据块. 所以和其他文件传输协议比起来, rsync在跨主机传输文件时会占用较小的带宽.
不需要特殊权限
安装和运行rsync 不需要特殊权限.
Rsync工作模式
1)单个主机本地之间的数据传输(此时类似于cp命令的功能)
2)借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)
3)以守护进程(socket)的方式传输数据(这个是rsync自身的重要功能)
Rsync远程同步实验
实验环境
服务器 | IP | 安装服务 | 同步目录 |
---|---|---|---|
rsync源服务器 | 10.15.3.42 | rsync,httpd | /filesrc |
rsync目标服务器 | 10.15.3.100 | rsync,httpd,inotify-tools | /filedst |
配置Rsync源服务器
#rsync源服务器 (10.15.3.42 )与 rsync目标服务器 (10.15.3.100)均需要关闭防火墙并安装httpd服务
[root@src ~]# systemctl stop firewalld
[root@src ~]# setenforce 0
[root@src ~]# yum -y install httpd
[root@src ~]# systemctl start httpd
[root@src ~]# systemctl enable httpd
注意:如本机安装过nginx,需要把apache端口修改为非80端口,否则会启动失败.
[root@src ~]# rpm -q rsync #查看系统是否已经安装rsync服务
rsync-3.1.2-10.el7.x86_64
[root@src ~]# vi /etc/rsyncd.conf ##添加以下配置
uid = nobody #也可以为root
gid = nobody #也可以为root
use chroot = yes #禁锢在源目录
address = 10.15.3.42 #监听地址,监听本机地址
port 873 #监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #存放进程 ID 的文件位置
hosts allow = 10.15.3.0/24 #允许同步的客户机网段
[wwwroot] #共享模块名称
path = /filesrc #源目录的实际路径(同步的目录)
comment = Document Root of www.kgc.com
read only = yes #是否为只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
auth users = backuper #授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
----------------------------------------------------------------------------------
#如采用匿名的方式,只要将其中的“auth users”和“secrets file”配置项去掉即可。