Rsync学习笔记01

Rsync简介

  • Rsync是一款开源的快速的、可实现全量及增量的本地或远程数据备份的多功能工具.并且在复制时可以不改变原油数据的属性信息,即可实现数据的备份迁移特性.
  • Rsync提供了大量参数来控制复制行为的各个方面,并且允许多种灵活的方式来实现文件的传输复制.以其delta-transfer算法闻名.通过减少网络数据发送数量,只发送源文件和目标文件之间的差异信息.从而实现数据的增量复制

Rsync功能

  • Rsync全称Remote synchronization,Rsync可使本地和远程两台主机之间的数据快速复制、远程备份功能,Rsync软件自带的rsync命令本身就可以实现异地主机复制数据,这个功能类似于scp命令(借助SSH服务实现远程传输数据),但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝(通用需借助于SSH服务传输数据),此外,Rsync软件还支持以配置守护进程方式实现异机数据复制
  • 除了远程复制传输数据外,Rsync还可以在本地主机的不同分区或者目录之间全量及增量复制数据,类似于cp命令,但由于cp命令,cp命令每次都是全量拷贝,而Rsync还可以增量拷贝
  • rsync还可作为删除和查看命令被应用,在某种情况下类似于传统的mv和ls命令
  • rsync命令可实现的功能
    1. 实现本地数据同步复制(本地工作模式,相当于cp)
    2. 实现远程数据同步复制(远程Shell工作模式,相当于scp)
    3. 实现数据信息删除功能(本地工作模式,相当于rm)
    4. 实现数据信息查看功能(本地或远程工作模式,相当于ls)

Rsync软件特性

  • 支持拷贝普通文件与特殊文件,如链接文件、设备文件等
  • 支持排除指定文件或目录同步功能,相当于打包命令tar的排除功能
  • 可以做到保持源文件或目录的权限、时间、软硬链接、属主、属组等所有属性不改变
  • 可实现增量复制,即只复制发送变化的数据,因此数据传输效率很高
  • 可以使用rcp、rsh、SSH等方式来配合进行隧道加密传输文件(Rsync本身不对数据加密)
  • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
  • 支持匿名或认证(无须系统用户)进程模式传输,安全地进行数据备份及镜像

Rsync软件复制原理

  • 默认情况下,在备份复制数据时,Rsync通过其独特的quick check算法,仅复制大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限、属主等属性的变化复制,需指定响应的参数,甚至实现只复制一个文件里有变化的部分内容,所以可以实现快速地备份复制数据,即采用增量复制方法对数据信息进行复制,与传统cp、scp复制工具的全量复制截然不同,增量复制数据在效率上渊源高于全量复制
  • Rsync3.x版本增量复制原理是一边比对差异,一遍对差异的数据部分进行复制

Rsync工作方式

  1. 本地(local)数据传输模式
    • Rsync的本地传输模式,类似于cp复制命令,可以实现文件、目录的移动备份等功能,所不同的是Rsync具有增量复制的功能
  2. 远程shell传输模式
    • 远程Shell数据传输模式一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器是对等的,没有客户端与服务端之分,整个过程类似于scp远程复制命令,所不同的是Rsync有增量复制的功能,但缺少scp的加密复制功能
  3. 守护进程(daemon)传输模式
    • 守护进程传输模式是在客户端与服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制

本地数据传输模式

rsync命令 [OPTION...] SRC... [DEST]
rsync命令 参数选项 源目录或文件 目的目录或文件
# 复制
rsync file1 /tmp # 复制文件到/tmp目录
rsync -r /opt/null /tmp  # 复制目录到/tmp,需加-r参数

# 删除/清空
# 利用rsync清空文件内容
touch file1 file2
echo '111' > file1
rsync -r --delete file2 file1

mkdir -p /opt/null # 创建一个空目录
rsync -r /opt/null /tmp # 清空tmp下所有内容

# 查询
rsync /etc  # 目录信息
drwxr-xr-x          8,192 2020/04/12 03:32:45 etc
rsync /etc/hosts  # 文件信息
-rw-r--r--            394 2020/04/11 04:22:05 hosts
  • 注意在使用rsync命令对目录数据进行本地或远程复制时,目录名称后面是否加'/'产生的复制效果是不一样的.目录后面不加'/',会将/test目录及目录下面的文件内容一并复制到tmp目录中;如果目录后面加了'/',会将/test目录下的文件内容复制到tmp目录,但test目录本身没有被复制

远程shell传输模式

  1. 远程Shell数据传输模式语法

    • 远程Shell数据传输模式分为拉取和推送两种模式,拉取是指从远端服务器把数据拉取到本地服务区,推送是指把数据从本地服务器推送到远端服务器
    • (1)拉取
    rsync命令 [OPTION...] [user@]HOST:SRC DEST...
    rsync 参数选项 [用户]@[主机地址]:[源路径] 本地路径
    • (2)推送
    rsync命令 [OPTION...] SRC... [user@]HOST:DEST
    rsync 参数选项 本地路径 [用户]@[主机地址]:[目的路径]
  2. 实践

    1. 拉取
    rsync -av -e 'ssh -p 22' [email protected]:/etc/hosts /test
    # a:--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD  
    # v:--verbose 详细模式输出
    # e:指定数据传输方式为ssh隧道加密传输,如果ssh端口默认是22,则-e 'ssh -p 22'可以省略
    
    1. 拉取
    rsync -av file1 [email protected]:/tmp
    
  • 注意:
    1. 采用远程Shell数据传输模式,每次都需要输入远程主机密码信息,无法实现免交互;因此需要配合SSH key免密码来完成数据免交互同步
    2. 该复制使用系统用户进行存在安全隐患,而使用普通用户又会导致权限不足
    3. 守护进程传输时更重要的方式

你可能感兴趣的:(Rsync学习笔记01)