rsync

rsync是一款强大的工具,用于实现本地或远程数据的全量和增量镜像备份。它支持特殊文件复制,能保持文件的所有属性不变,并提供三种传输方式:本地传输、远程shell通道和守护进程方式。rsync命令包括本地和远程同步操作,可通过参数选项进行详细配置,如排除或包含特定文件。此外,rsync还能与规则文件配合,实现灵活的文件筛选和排除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 服务器
在这里插入图片描述
定义配置文件
在这里插入图片描述
配置防火墙规则
在这里插入图片描述
启动并启用服务
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值