目录
一、rsync概念
1.rsync简介
2.rsync特点
3、增量和全局传输
二、Rsync工作方式
1.准备好rsync备份服务器
2.本地的数据传输模式
3.远程的数据传输模式
4.rsync数据推拉模式
三、实践
1.准备三台虚拟机
2.都安装rsync服务
3.拉取远程文件
3.推送文件
4.rsync守护模式传输
四.rsync守护进程部署
1.确保安装了rsync服务
2.修改服务端配置文件
4.在rsync服务端做好环境配置工作
5.启动rsync服务开机自启
6.客户端配置
8.rsync大文件断点续传
一、rsync概念
1.rsync简介
全局数据备份,以及增量数据备份本地,远程的数据同步,一款优秀的工具
rsync可以类似于cp一样,实现本地数据拷贝
也能像scp一样进行远程的数据拷贝
还支持守护进程方式数据拷贝
delta-transfer算法,实现增量复制
scp远程数据传输,只能是实现全量数据传输
2.rsync特点
- 可以实现cp效果,本地数据备份
- 实现远程数据同步复制,如scp效果
- 如rm效果可以删除本地文件
- 也可以实现远程的数据查看,例如远程的ssh+ls的命令执行
软件特性
- rsync支持普通文件拷贝,支持特殊文件拷贝,link,c设备文件
- 还支持文件排他,可以指定不拷贝那些文件
- 还能实现数据拷贝后,属性不发生变化(start命令查看)
- 特点~支持增量数据拷贝
- rsync可以配合ssh实现安全的数据传输,rsync本身不支持数据加密
- rsnc支持匿名用户传输
3、增量和全局传输
rsync在数据备份的时候,通过quick check算法,检测数据,容量,最后修改时间变化
rsync甚至可以复制单个文件的内容传输
增量传输的原理就是,一边对比差异,一边对比差异进行数据复制,centos7上的3.x版本,效率更高
二、Rsync工作方式
1.准备好rsync备份服务器
安装rsync工具
yum install -y rsync
2.本地的数据传输模式
类似于cp,ls,touch命令的增删改查,实现数据的增量备份
语法模式
备份hosts文件
rsync /etc/hosts /tmp/
差异化同步
file目录和tmp目录差异化同步
[root@localhost /]# mkdir /file/{11,22,33}
[root@localhost /]# ls -l file
total 0
drwxr-xr-x. 2 root root 6 Nov 12 08:12 11
drwxr-xr-x. 2 root root 6 Nov 12 08:12 22
drwxr-xr-x. 2 root root 6 Nov 12 08:12 33
[root@localhost /]# ls -l /tmp/
total 0
[root@localhost /]# rsync -r --delete /file/ /tmp/
[root@localhost /]# ls -l /tmp/
total 0
drwxr-xr-x. 2 root root 6 Nov 12 08:12 11
drwxr-xr-x. 2 root root 6 Nov 12 08:12 22
drwxr-xr-x. 2 root root 6 Nov 12 08:12 33
文件差异化同步
[root@localhost /]# echo "111111111122222222222222" > /file/1.txt
[root@localhost /]# cat /file/1.txt
111111111122222222222222
[root@localhost /]# touch /tmp/null
[root@localhost /]# cat /tmp/null
[root@localhost /]# rsync -r --delete /tmp/null file/1.txt
[root@localhost /]# cat /file/1.txt
3.远程的数据传输模式
借助于ssh服务在两台机器之间进行数据传输,此时已经没有客户端和服务端之分,而是一种相对关系。
4.rsync数据推拉模式
远程的数据传输模式,有两种情况,推送和拉取
拉取:把远程服务器的数据,拉取到本地来
推送:把本地的数据,推送,上传发送远程的服务器
三、实践
1.准备三台虚拟机
第一台
第二台
第三台
2.都安装rsync服务
yum install rsync -y
3.拉取远程文件
我们在192.168.0.103服务器上创建一个文件
echo "yuancheng rsync" > /tmp/yuanc.txt
拉取文件,然后检查
rsync -av -e 'ssh -p 22' root@192.168.0.103:/tmp/yuanc.txt /tmp/
cat /tmp/yuanc.txt
3.推送文件
rsync -av -e 'ssh -p 22' /tmp/yuanc.txt root@192.168.0.107:/tmp/
4.rsync守护模式传输
守护模式传输是在客户端与服务端之间的数据复制
服务端需要配置好守护进程,等待客户端远程的执行数据同步命令,然后实现数据的拉取和推送
四.rsync守护进程部署
1.确保安装了rsync服务
yum install rsync -y
2.修改服务端配置文件
vim /etc/rsyncd.conf
输入
uid = rsyncgid = rsyncfake super = yesuse chroot = nomax connections = 200pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.lockiignore errorsread only = falselist = falsehosts allow = 192.168.0.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets file = /etc/rsync.password[backup]comment = This is rsync backup!path = /backup/[myweb]path=/my_web/
3.创建用户
useradd rsync -s /sbin/nologin -M
id rsync
4.在rsync服务端做好环境配置工作
mkdir -p /backup
chown -R rsync.rsync /backup
echo "rsync_backup:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
5.启动rsync服务开机自启
systemctl restart rsyncd
systemctl enable rsyncd
netstat -tunlp|grep rsync
6.客户端配置
yum install rsync -y
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
export RSYNC_PASSWORD=123456
echo "export RSYNC_PASSWORD=123456" >> /etc/profile
7.测试
客户端推送数据
rsync -avzP /my_rsync rsync_backup@192.168.0.107::backup --password-file=/etc/rsync.password
服务端
客户端拉取数据
服务端创建文件
touch /backup/{11,22,33,44,55,66,77}
ls /backup/
客户端
rsync -avzP rsync_backup@192.168.0.107::backup --password-file=/etc/rsync.password /my_rsync/
exclude排除文件
服务端准备
touch /backup/{11,22,33,44,55,66,77}
mkdir /backup/{a,b,c,d,e,f}
touch /backup/a/11
touch /backup/b/22
touch /backup/c/33
touch /backup/d/44
客户端
rsync --exclude=11 --exclude=d/44 -avzP rsync_backup@192.168.0.107::backup --password-file=/etc/rsync.password /my_rsync/
8.rsync大文件断点续传
rsync提供了如下的参数
- partial
默认情况下rsync传输中断后,将会删除所有传输了一部分的文件,重新传输在某些情况下,用户可能会希望保留已经传输的内容,该参数,告知rsync保留已经传输好的内容,使得剩余部分,可以继传输
- partial-dir=DIR
保留已经传输的部分文件,且将内容保存到一个目录中,而不是立即写入到目标文件,便于下次传输的时候,rsync使用该目录中的数据,再进行整体数据的传输和恢复,结束后删除该目录
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
实例
服务端
dd if=/dev/zero of=/backup/file bs=10M count=128
客户端
rsync -avzP --partial-dir=/tmp//my_rsync/test1 rsync_backup@192.168.0.107::backup --password-file=/etc/rsync.password /my_rsync/