Rsync服务详解

Rsync简介 什么是rsync?

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rstync软件适用于unix/linux/windows等多种操作系统平台。

Rsync英文全称为Remotesynchronization,即远程同步。从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不通分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。此外,利用Rsync还可以实现删除文件和目录功能,这又相当于rm命令。

一个rsync相当于scp,cp,rm,并且优于他们每一个命令。

在同步备份数据时,默认情况下,Rsync通过其独特的”quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

Rsync2.x和rsync3.x差异

# CentOS5,rsync2.x对比方法,把所有的文件对比一遍,然后进行同步。 # CentOS6,rsync3.x对比方法,一边对比差异,一边对差异的部分进行同步。 rsync特性 # 支持拷贝特殊文件如链接文件,设备等。 # 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。 # 可以做到保持源文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。 # 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。 # 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身对数据不加密)。 # 可以通过sockert(进程方式)传输文件和数据(服务端和客户端)。 # 支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。 # 注意:需要注意拷贝的时候源目录加“/”和不加“/”的区别(加“/”表示只拷贝该目录之下的文件;不加“/”表示连该目录一起拷贝) rsync应用场景

定时备份

# 可以通过crond + rsync 来实现

实时备份

# 可以通过inotify(sersync)+ rsync来实现 inotify使用

作为客户端命令,常用参数如下

inotify命令参数 # -avz --多个参数的集合 # -v, --verbose 详细模式输出,传输时的进度等信息 # -z, --compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。 # -a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl # -r,--recursive 对子目录以递归模式,即目录下所有目录有同样传输 # -t,--times,保持文件时间信息 # -o,--owner 保持文件属主信息 # -p,--perms 保持文件权限 # -g,--group 保持文件属组信息 # -P,--progress 显示同步的过程及传世时的进度等信息(大写的P) # -D,devices 保持设备文件信息 # -l,--links 保持软链接 # -e,--rsh=COMMAND 使用的信道协议,指替代rsh的shell程序。例如:ssh # -exclude=PATTERN指排斥不需要传输的文件模式 # --bwlimit=RATE 限速,默认是以kbit/s为单位 # --delete --删除(本地没有,远端也没有),让目标目录SRC和源目录数据DST一致,适用于两个目录完全一样 innotify的三种工作模式之本地模式

Rsync的本地模式,即将本地系统的文件或目录从一个目录移动到另外一个目录中,相当于一个系统命令来使用(不常用)。

命令格式

# rsync [OPTION...]SRC... [DEST]

Example

[root@jenkins data]# echo 1234 > test1.txt [root@jenkins data]# ls test1.txt [root@jenkins data]# rsync /data/test1.txt /data/test2.txt [root@jenkins data]# cat /data/test2.txt 1234 innotify的三种工作模式之shell模式

Rsync的远程shell模式,即将本地系统文件或目录从一台服务器传输向另外一台服务器,类似于scp命令。既可以推送数据到其他服务器,也可以下拉文件到本地。(该模式也不常用)

命令格式

# Pull: rsync[OPTION...] [USER@]HOST:SRC... [DEST] # Push: rsync[OPTION...] SRC... [USER@]HOST:DEST

Example: 将一个文件传输到另一台服务器

[root@client data]# rsync -avz /data/test1.txt root@39.108.140.0:/root/ root@39.108.140.0's password: sending incremental file list test1.txt sent 97 bytes received 35 bytes 37.71 bytes/sec total size is 5 speedup is 0.04 [root@server ~]# cat test1.txt 1234

Example: 将一台主机的文件下载到本地

[root@client data]# rsync -avz 39.108.140.0:/root/test1.txt /data/test3.txt root@39.108.140.0's password: receiving incremental file list test1.txt sent 43 bytes received 97 bytes 56.00 bytes/sec total size is 5 speedup is 0.04 [root@client data]# cat test3.txt 1234

加密传输(隧道传输)

Rsync的传输协议默认是不加密的明文传输,如果有加密传输文件的需求,可以自定义加密管道管道协议。使用参数:-e来指定相应的管道协议。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyjfw.html