一、rsync是什么
Rsync是一款开源的、快速的、多功能的、可实现全量及增量
的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
Rsync软件适用于unix/linux/windows等多种操作系统平台。
Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。
它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。减少通过网络数据发送数量,利用只发送源文件和目标文件之间的差异信息,从而实现数据的增量同步复制。
Rsync被广泛用于数据备份和镜像,并且作为一种改进后的复制命令用于日常运维。
Rsync具备使本地和远程两台主机之间的数据快速复制
,远程备份的功能
,Rsync命令本身即可实现异地主机复制数据
,功能类似scp又优于scp,scp每次都是全量备份
,rsync可以实现增量拷贝
(和scp一样都是基于ssh服务传输),Rsync软件还支持配置守护进程,实现异机数据复制。
增量复制是Rsync一特点,优于scp,cp命令。
Rsync实现如下功能
- 本地数据同步复制,效果如cp
- 远程数据同步复制,如scp
- 本地数据删除,如rm
- 远程数据查看,如ls
Rsync软件特性
- 支持拷贝普通文件,特殊文件(link文件,设备文件)
- 支持排除指定文件、目录的同步功能(同步数据时,指定文件不同步)
- 能够保持原有文件所有属性均不变(stat查看的状态)
- 实现增量复制(只复制变化的数据,数据传输效率极高)
- 可以配合ssh、rcp、rsh等方式进行隧道加密文件传输(rsync本身不加密数据)
- 可以通过socket(进行通信文件)传输文件和数据(c/s架构)
- 支持匿名用户模式传输+
二、rsync工具的实现备份的方式
rsync默认运行端口
873端口
rsync三种工作模式
1.本地模式,类似cp
2.远程模式,常用,类似scp,不同的机器之间,通过网络拷贝数据
3.后台服务模式,常用,用于实时数据同步,安全性更高
rsync常用参数
rsync参数的具体解释如下:
-a:--archive,归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rtopgDl
-v:--verbose,详细模式输出,传输时的进度等信息。
-z:--compress,传输时进行压缩以提高传输效率,
-r:对子目录以递归模式,即目录下的所有目录都同样传输。
-o:保留文件属性。
-p:保留文件权限。
-g:保留文件组权限。
-D:保留设备文件信息。
-l:保留文件软链接。
-P:显示同步的过程及传输时的进度等信息。
--delete 删除那些DST中SRC没有的文件
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
rsync本地模式备份
1、安装rsync
yum install rsync -y
2、命令语法-----类似于 cp 命令
rsync 参数 源路径 目标路径
3、创建测试文件进行rsync备份
[root@rsync-41 ~]#tree /opt/test/
/opt/test/
└── rsync_test.txt
0 directories, 1 file
[root@rsync-41 ~]#rsync -azvP /opt/test/rsync_test.txt /opt/test1/
sending incremental file list
created directory /opt/test1
rsync_test.txt
7 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 104 bytes received 68 bytes 344.00 bytes/sec
total size is 7 speedup is 0.04
[root@rsync-41 ~]#tree /opt/
/opt/
├── test
│ └── rsync_test.txt
└── test1
└── rsync_test.txt
2 directories, 2 files
rsync远程模式备份
rsync默认走ssh协议,实现如scp的作用
推送方式,把自己的数据推送到另一台机器上(上传)
把rsync-41 /root下的数据 拷贝到 nfs-31 /tmp下
[root@rsync-41 ~]#rsync -avzP /root/ root@10.0.0.31:/tmp/test/
拉取方式,拉取别人机器的数据到自己的机器上(下载)
把nfs-31 /root下的数据 下载到rsync-41 /tmp下
[root@rsync-41 ~]#rsync -avzP root@10.0.0.31:/root/ /opt/test1/
rsync服务模式(服务端配置)
1、安装rsync
yum install rsync -y
2、修改配置文件--- /etc/rsyncd.conf
uid = www # 运行进程的用户
gid = www # 运行进程的用户组
port = 873 # 监听端口
fake super = yes # 无需让 rsync 以 root 身份运行,允许接收文件的完整属性
use chroot = no # 禁锢推送的数据至某个目录, 不允许跳出该目录
max connections = 200 # 最大连接数
timeout = 600 # 超时时间
ignore errors # 忽略错误信息
read only = false # 对备份数据可读写
list = false # 不允许查看模块信息
auth users = rsync_backup # 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd # 定义 rsync 服务用户连接认证密码文件路径
[backup] # 定义模块信息
comment = 注释信息 # 模块注释信息
path = /backup # 定义接收备份数据目录
3、创建用户以及数据目录
[root@rsync-41 ~]#useradd -u 1000 -M -s /sbin/nologin www
[root@rsync-41 ~]#mkdir -p /data/ /backup
4、修改备份目录权限
[root@rsync-41 ~]#chown -R www:www /data/
[root@rsync-41 ~]#chown -R www:www /backup/
5、创建rsync专用的账户密码
[root@rsync-41 ~]#cat /etc/rsync.passwd
rsync_backup:123123
6、降低密码文件的权限
[root@rsync-41 ~]#chmod 600 /etc/rsync.passwd
[root@rsync-41 ~]#ll /etc/rsync.passwd
-rw-------. 1 root root 20 Jul 25 10:58 /etc/rsync.passwd
7、启动服务
[root@rsync-41 ~]#systemctl start rsyncd
[root@rsync-41 ~]#systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-07-25 11:01:30 CST; 9s ago
rsync服务模式(客户端配置)
1.安装rsync
yum install rsync -y
2.配置密码文件及授权
方法一,生成密码文件,每次连接都指定这个密码文件
echo '123123' > /etc/rsync.pwd
chmod 600 /etc/rsync.pwd
方法二,不用文件密码形式,采用环境变量形式
export RSYNC_PASSWORD=123123
3、使用rsync命令进行操作备份
注意。这里的语法有区别
rsync -avzP 文件路径 账户@主机名::模块名
创建测试文件
[root@nfs-31 ~]#cat /opt/nfs-test/1.txt
这是nfs客户端的文件
向rsync-41机器进行文件备份
方式一:[root@nfs-31 ~]#rsync -az /opt/nfs-test/1.txt rsync_backup@rsync-41::backup
方式二:[root@nfs-31 ~]#rsync -az --password-file=/etc/rsync.pwd /opt/nfs-test/1.txt rsync_backup@rsync-41::backup
4、查看rsync-41机器的backup文件,是有备份的文件
[root@rsync-41 ~]#cat /backup/1.txt
这是nfs客户端的文件