1.什么是rsync?
开源的、高速的、数据复制工具。
2.rsync作用:
工作中需要数据备份,本地服务器目录、不同机器、不同机房之间的数据备份
3.rsync功能特性
支持拷贝普通文件与特殊文件
支持排除文件或目录,相当于tar的排除
可以做到保持源文件或目录的权限、时间、软硬链接、属主
可以实现增量复制
可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据
支持匿名或认证进程模式传输
4.rsync缺点:
大量小文件复制的时候,rsync可能会停止僵死或效率不高
一次性远程拷贝可以用scp,如果大量小文件可以打包再拷贝
全量和增量:
全量复制
~]# cp -a /etc/ /opt/
~]# \cp -a /etc/ /opt/ #\不询问而直接覆盖
~]# touch /etc/test.txt
~]# \cp -a /etc/ /opt/
增量复制
只复制test.txt
5.增量复制原理
使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制
2.x版本对比差异后复制,
3.x版本边对比边复制
6.rsync三种工作模式
1)本地(local)
操作:
a.把数据从一个地方复制到另一个地方(仅在一台机器增量) 相当于cp 、mv
b.通过加参数实现删除的功能,相当于rm
c.查看属性信息功能,ls
a.拷贝实践:
~]# ls /opt/
~]# rsync /etc/hosts /opt/
~]# ls /opt/
hosts
~]# ll /etc/hosts /opt/hosts
-rw-r--r--. 1 root root 295 6月 8 09:46 /etc/hosts
-rw-r--r-- 1 root root 295 6月 8 15:19 /opt/hosts
保持属性
~]# ll /etc/hosts /opt/hosts
-rw-r--r--. 1 root root 295 6月 8 09:46 /etc/hosts
-rw-r--r-- 1 root root 295 6月 8 09:46 /opt/hosts
b.删除实践
~]# touch /null.txt #<---空文件
~]# cat /opt/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.168.1.5 lb01
172.168.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.31 nfs01
172.16.1.41 bakup
172.16.1.51 db01
172.16.1.61 n01
~]# rsync -r --delete /null.txt /opt/hosts
~]# cat /opt/hosts
2)远程shell模式
借助类似ssh隧道传输数据,适合不同的机器之间复制
pull,拉:从远端拉取到本地
rsync [option] [user@]host:src... dest
rsync 参数 认证用户@主机地址:源路径 本地路径
options:
-a 归档递归方式传输
-v 显示详细信息 verbose
-z compress传输时进行压缩
-P 显示传输进度信息
--exclude 传输时排除指定的文件或目录
[root@nfs01 ~]# rsync -avz root@bakup:/opt/hosts /opt/
push,推:从本地推到远端
rsync [option] src... user@host:dest
[root@nfs01 ~]# rsync -avz /etc/hosts root@bakup:/opt #<---加密传输
[root@nfs01 ~]# rsync -avz /etc/hosts -e "ssh -p 22" root@bakup:/opt
上述命令是等价的
3) rsync守护进程模式 ※※※
首先要搭建服务端,然后才能在客户端实现推拉数据
================== backup服务器下:=============
实践
1)安装rsync服务
yum install rsync -y
2)备份配置文件
cp /etc/rsyncd.conf{,.ori}
3)创建用户和备份目录/backup
~]# useradd rsync
~]# id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
~]# mkdir -p /backup
~]# chown -R rsync.rsync /backup/ #< ---- 修改
~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 6月 8 20:26 /backup/
4)修改配置文件内容
cat >/etc/rsyncd.conf<<EOF
#rsync_config_start
#created by oldboy
#rsyncd.conf start##
uid = rsync #管理备份目录的用户
gid = rsync #管理备份目录的组
use chroot = no #安全功能,是否要锁定到备份目录
fake super = yes #不用root用户也可以存储文件的完整属性
max connections = 200 #最大的连接数,并发连接
timeout = 600 #超时时间
pid file = /var/run/rsyncd.pid #进程号对应文件
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件
ignore errors #忽略错误
read only = false #可写
list = false #不允许列表
hosts allow = 172.16.1.0/24 #授权哪些主机访问
hosts deny = 0.0.0.0/32 #哪些不允许访问
#上边两项二选一
auth users = rsync_backup #远程虚拟连接用户
secrets file = /etc/rsync.password #密码文件,格式:用户名:密码 ;权限必须600
[backup] #[模块名] 远程访问使用模块名访问
comment = welcome to oldbly backup! #注释
path = /backup/ #服务器端用于备份的目录;用户和组 rsync.rsync
EOF
5)启动rsync并设置开机启动
systemctl start rsyncd
systemctl enable rsyncd
6)配置密码文件
echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsyncd.password
客户端配置
1)
方法一
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
方法二
echo 'export RSYNC_PASSWORD=123456' >>/etc/bashrc
. /etc/bashrc
echo $RSYNC_PASSWORD
123456
2)守护进程模式
配置服务器端守护进程,实现数据传输
①服务器提供守护进程 ②客户端执行操作
pull 拉取
语法①:
rsync option user@host::src dest
rsync 参数 用户@主机地址::模块名 /本地路径
语法②:
rsync option rsync://user@host::src dest
push 推送
语法①:
rsync option dest user@host::src
rsync 参数 用户@主机地址::模块名
语法②:
rsync option est rsync://user@host::src d
rsync 参数 :源路径 本地路径
测试执行
1.客户端使用方法一配置,使用如下命令
~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwordsending incremental file list
2.客户端使用方法二配置,使用如下命令
~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
3.拉取
~]# rsync -avz rsync_backup@172.16.1.41::backup /opt/