首页 运维

Rsync文件同步工具介绍

发布于: 2020-06-09

Rsync介绍

Rsync介绍

是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。软件适用于unix、linux、windows等多种操作系统平台。全称为Remote Rynchronization。
ssh带的scp,但优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。
Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,类型cp命令。
Rsync还可以实现删除文件和目录的功能。
一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。

Rsync同步

在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录。也可以根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以能实现快速的同步备份数据。
版本区别:
version2版本会把要同步的文件加载和已有的文件比较,如果发生变化就同步过去。version3版本边比较边同步。
Rsync是文件系统之上,基于文件的同步;基于block的同步用drbd。
union双机互相同步,csync2多机同步。

Rsync特性

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

Rsync企业应用

  • 两台服务器之间的数据同步
  • 集群服务器的数据同步
  • 定时同步(cron+rsync)与实时同步(rsync+inotify、rsync+sersync)

Rsync工作方式

  • 单个主机本地之间的数据传输(此时类似于cp命令的功能)
  • 借助rcp、ssh等通道来传输数据(此时类似于scp命令的功能)
  • 以守护进程(socket)的方式传输数据(这个是rsync自身的重要功能)

Rsync优缺点

  • 优点:增量备份同步、支持socket(daemon)、集中备份
  • 缺点:大量小文件同步的时候比对时间较长,有的时候rsync进程会停止。解决方式可以打包同步或者通过drbd方式。同步大文件(10G)这样的大文件有时候也会有问题。(发生同步中断)未完成同步前,是隐藏文件。

常用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
语法:  rsync [option...] src... [dest]
说明:
[option]为同步时的参数选项 -avz
-z --compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。
-v --verbose 详细模式输出,传输时的进度等信息。
-a --archive归档模式,表示以递归方式传输文件,并保持所有文件属性。等于-rtopgDl
-r --对子目录以递归模式,及目录下的所有目录都同样传输。
-t --保持文件时间信息。
-o --保持文件属主信息。
-p --保持文件权限。
-g --保持文件属组信息。
-P --显示同步的过程及传输时的进度信息。
-D --保持设备文件信息。
-l --保留软连接。
-e 使用的信道协议,指定替代rsh的shell。
--exclude=PATTERN 指定排除不需要传输的文件模式。

[src]为源,即需要拷贝的分区、文件或目录等。
[dest]为目的分区、文件或目录等。

常见使用方法

单个主机本地之间的数据传输 本地传输模式(local-only mode)

1
rsync -az /home/e-books/ /home/books/

将远程目录复制/同步到本地计算机

1
rsync -avzh root@192.168.1.100:/www/rsync/php7 /home/php7/

将文件和目录复制/同步到服务器或从服务器同步

1
2
3
4
rsync -avz /home/rsync/ root@192.168.0.101:/www/rsync/

//带进度条
rsync -avz ssh --progress /home/rsync/ root@192.168.0.101:/www/rsync/