一、rsync的概念
rsync:可实现全量及增量的本地或远程数据镜像同步备份的优秀工具
二、rsync的特性
1、支持拷贝特殊文件如链接、设备等;
2、可以有排除指定文件或目录同步的功能,相当于打包命令 tar 的排除功能;
3、可做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变;
4、可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高;
5、可以使用 rcp、rsh、ssh 等方式来配合传输文件;
6、可以通过 socket(进程方式)传输文件和数据;
7、可支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
三、三大传输方式
1、主机本地间的数据传输(类似于 cp)
2、借助 rcp、ssh 等通道来传输数据(类似于 scp)
3、以守护进程(socket)的方式传送数据
四、rsync 命令
1、rsync 命令基本格式为:
1)本地使用:
rsync [OPTION...] SRC... [DEST]
2)通过远程 Shell 使用:
拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST:DEST
3)访问 rsync 服务器:
拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST::DEST
拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
其中:
SRC: 是要复制的源位置
DEST: 是复制目标位置
若本地登录用户与远程主机上的用户一致,可以省略 USER@
使用远程 shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符
使用 rsync 服务器同步时,主机名与资源间使用两个冒号“::”作为分隔符
当访问 rsync 服务器时也可以使用 rsync:// URL
“拉”复制是指从远程主机复制文件到本地主机(下载)
“推”复制是指从本地主机复制文件到远程主机(上传)
当进行“拉”复制时,若指定一个 SRC 且省略 DEST,则只列出资源而不进行复制
常用参数选项说明:
四、rsync的基础使用语法
1、本地磁盘同步数据
[root@cobbler ~]# mkdir dir0
[root@cobbler ~]# rsync -av --delete /home /dir0
sending incremental file list
created directory /dir0
home/
home/zt/
home/zt/.ICEauthority
home/zt/.bash_history
home/zt/.bash_logout
home/zt/.bash_profile
home/zt/.bashrc
......(中间省略)
sent 5749160 bytes received 1596 bytes 3833837.33 bytes/sec
total size is 5741443 speedup is 1.00
在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:
• /home : : 表示将整个 /home 目录复制到目标目录
• /home/ : : 表示将 /home
2、基于ssh的rsync远程同步数据(推)
rsvnc -v /etc/hosts root@192.168.163.128:
3、基于ssh的rsync远程同步数据(拉)
rsync -v root@192.168.163.128:/etc/services
注意:拉之前,必须确保对端主机安装了rsync 工具
4、从远程rsync服务器同步数据
5、定期自动同步数据
如果安装了自己的匿名 rsync 服务器请相应地更改 rsync URL。
6、筛选rsync
7、仅复制目录树并忽略目录中的文件
选项--include
和 和 --exclude
都不能使用间隔符。例如:
--exclude "logs/" --exclude "conf/"
不能写成--exclude "logs/ conf/"
使用 --exclude-from/--include-from
选项
当include/exclude
的规则较复杂时,可以将规则写入规则文件。使用规则文件可以灵活地选择
传输哪些文件(include)以及忽略哪些文件(exclude)
• 若文件/目录在剔除列表中,则忽略传输
• 若文件/目录在包含列表中,则传输
• 若文件/目录未被提及,也传输
在 rsync 的命令行中使用 --exclude-from=FILE 或 --include-from=FILE 读取规则文件。
规则文件 FILE 的书写约定:
• 每行书写一条规则 RULE
• 以 # 或 ; 开始的行为注释行
包含(include)和排除(exclude)规则的语法如下:
• include PATTERN 或简写为 + PATTERN
• exclude PATTERN 或简写为 – PATTERN
PATTERN 的书写规则如下:
• 以 / 开头:匹配被传输的跟路径上的文件或目录
• 以 / 结尾:匹配目录而非普通文件、链接文件或设备文件
• 使用通配符
• *:匹配非空目录或文件(遇到 / 截止)
• **:匹配任何路径(包含 / )
• ?:匹配除了 / 的任意单个字符
• [:匹配字符集中的任意一个字符,如 [a-z] 或 [[:alpha:]]
• 可以使用转义字符 \ 将上述通配符还原为字符本身含义
例1:不传输所有后缀为 .o 的文件 - *.o
不传输传输根目录下名为 foo 的文件或目录 - /foo
不传输名为 foo 的目录 - foo/
不传输 /foo 目录下的名为 bar 的文件或目录 - /foo/bar
例2:传输所有目录和C语言源文件并禁止传输其他文件
+ */
+ *.c
- *
例3:仅传输 foo 目录和其下的 bar.c 文件
- foo/
- foo/bar.c
定义规则文件
不传输 logs 目录
- logs/
不传输后缀为 .tmp 的文件
- *.tmp
传输 Apache 虚拟 主机文档目录 (// 匹配域名)
+ /srv/www/
+ /srv/www/*/
+ /srv/www/*/htdocs/
+ /srv/www/*/htdocs/**
传输每个用户的 public_html 目录(// 匹配用户名)
+ /home/
+ /home/*/
+ /home/*/public_html/
+ /home/*/public_html/**
禁止传输其他 - *
应用规则文件同步数据
配置匿名rsync 服务器
定义配置文件
配置防火墙规则
启动并启用服务