Rsync介绍
什么是rsync
rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据备份的优秀软件。rsync软件适用于Unix/linux/Windows等多种操作系统平台。
rsync英文称为remote synchronization(n,同步),从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制、远程备份的功能。这个功能类似于ssh带的scp命令,但是又优于scp命令的功,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync也可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
在备份复制数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅复制大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据,即增量复制。而scp、cp都是全量复制。
Cent6和7上默认版本Rsync 3.x是一边比对差异,一边对差异部分进行复制。
总结:一个rsync相当于scp、cp、rm,而且更优
官网:
rsync端口:873
rsync运行模式:C/S
Rsync的特性
-支持拷贝普通文件与特殊文件,如链接文件、设备文件等。
-支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
-可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
-可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。
-可以使用 rcp、rsh、SSH 等方式来配合进行隧道加密传输文件(Rsync 本身不对数据加密)。
-可以通过 socket(进程方式)传输文件和数据(服务端和客户端)。
-支持匿名或认证(无须系统用户) 进程模式传输,安全地进行数据备份及镜像。
scp命令介绍
## 推(上传):
比如把web01的1.txt推到backup
0 ✓ 08:46:58 root@web01,172.16.1.7:~ # vim 1.txt 要输点东西进去
0 ✓ 08:47:36 root@web01,172.16.1.7:~ # scp -r /root/1.txt [email protected]:/tmp
输入密码即可
0 ✓ 08:48:55 root@backup,172.16.1.41:/tmp # ll 看一眼,backup机已经有了
total 60
-rw-r--r-- 1 root root 7 Sep 13 08:56 1.txt
## 拉(下载):反过来
scp -r [email protected]:/tmp/1.txt /opt
# 注:scp基于SSH协议,停ssh就不能用了。scp是全量拷贝,rsync支持增量
关于备份类型
全量备份
将数据全部备份出来(效率低下)
增量备份
基于上一次的备份,将新增数据进行备份
差异备份
基于全量备份,新增的数据进行备份
rsync的三种传输模式
## 1、本地模式(类似cp,但rsync有增量方式)
本地拷贝命令:
Local: rsync [OPTION...] SRC... [DEST]
rsync 选项 本地源文件 本地目标路径
默认是文件
-a 目录
# 例如
rsync -a /etc/ /tmp 只是将/etc下的文件和目录传输过去,不包括etc目录本体
rsync -a /etc /tmp 将/etc目录及其下所有东西都传输
## 2、远程模式(通过ssh传输数据,类似scp命令)
# 推
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
推 rsync 选项 要推的本地文件 远程主机@IP:目标路径
# 例如
[root@web01 ~]# rsync -avz /root/1.txt [email protected]:/tmp/
[email protected]'s password: ...
效果同scp
[root@web01 ~]# scp /root/1.txt [email protected]:/tmp/
# 拉
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
拉 rsync 选项 远程主机@IP:要下载的文件 下载到本地的位置
# 例如
[root@web01 ~]# rsync -avz [email protected]:/etc/hostname ./ #拉取远程文件
[root@web01 ~]# rsync -avz [email protected]:/root/ /backup/ #拉取远程目录下的所有文件
[root@web01 ~]# rsync -avz [email protected]:/root /backup/ #拉取远程目录以及目录下的所有文件
# 说明:实际工作中why更多是用守护进程模式
1, 远程模式和scp差不多,基于ssh,要用到系统用户和密码,不安全,所以我们用守护进程模式
2, 守护进程模式不需要ssh协议,服务启动后,自带端口873
3, 守护进程模式可以设置匿名用户,不需要使用系统用户,更安全
# 3、守护进程模式
守护进程模式是在c/s之间进行数据复制。通常需要服务端部署rsync守护进程模式服务,然后在客户端执行命令,实现数据推拉等操作
#推
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync 选项 本地资源 虚拟用户名@IP::模块名
例如:将nfs的 /etc/shadow推送至rsync备份服务器的backup模块
[root@nfs ~]# rsync -avz /etc/shadow [email protected]::backup
#拉
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync 选项 虚拟用户名@主机IP::模块名 拉到本机哪里
例如:把backup模块数据拉到本机/opt下
[root@nfs ~]# rsync -avz [email protected]::backup /opt
rsync选项总结
# -a 归档模式传输, 等于-tropgDl
----------------------------------
-t 保持文件时间信息
-r 递归传输目录及子目录
-o 保持文件属主信息 owner
-p 保持文件权限 permit
-g 保持文件属组信息
-D 保持设备文件信息 device
-l 保留软链接
# -v 显示过程
# -z 传输时压缩以提高效率,到那边自动解压
# -P 显示进度
-L 保留软链接指向的目标文件
-e 传递参数
--exclude=PATTERN 指定排除不需要传输的文件模式
--exclude-from=file(eg:paichu.txt) 指定排除多个
vim paichu.txt
--bwlimit=100 限速XXX传输,看需求用
--partial 断点续传(很垃圾的服务器可能会断电那种,保险起见才会用)
比如迅雷你下了一半电脑突然关机,再开机不会重新下。但网页的话闪退就得重下
# --delete 决定数据是否要同步,有这个就同步
# --password-file=xxx 使用密码文件
rsync企业常见应用场景
1、服务器间周期性数据备份:手动或定时任务+rsync
见rsync实战(二)
适合:网站程序文件;系统配置文件变更
2、NFS到Backup服务器的实时复制:inotify/sersync+rsync
利用rsync结合inotify/sersync做实时数据复制。根据nfs上目录的变化,将变化的数据通过inotify/sersync结合rsync命令复制到backup服务器。
适合:用户上传的普通文件
实践见后续中期架构。