1.什么是rsync
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于Unix/linux/windows等多种操作系统平台。
2.rsync全量和增量
3.rsync命令的使用方法(1v4)
a.本地备份命令(替代cp)
[root@nfs01 ~]# rsync /etc/hosts /tmp
[root@nfs01 ~]# ls /tmp/
hosts
b.远程备份命令
rsync -rp (r递归复制 p保持文件属性不变)(代替scp)
[root@nfs01 /etc/NetworkManager]# rsync -rp /etc/services 172.16.1.41:/backup
root@172.16.1.41's password:
#####检查######
[root@backup ~]# ls /backup/
services
rsync远程备份目录
[root@nfs01 ~]# rsync -rp /root/shuai 172.16.1.41:/backup(备份的目录没有/,目录和文件一起传输 )
root@172.16.1.41's password:
#####检查######
[root@backup ~]# cd /backup/
[root@backup /backup]# tree shuai/
shuai/
├── shuai01.txt
├── shuai02.txt
└── shuai03.txt
[root@nfs01 ~]# rsync -rp /root/shuai/ 172.16.1.41:/backup (备份的目录有/,只传输目录下边的内容)
root@172.16.1.41's password:
#####检查######
[root@backup ~]# cd /backup/
[root@backup /backup]# ls
shuai01.txt shuai02.txt shuai03.txt
c .将本地目录替换远程目录(–delete同步数据)
[root@nfs01 ~]# rsync -rp --delete /shuai/ 172.16.1.41:/backup
root@172.16.1.41's password:
#####检查######
[root@backup /backup]# ls
shuai shuai.txt
[root@backup /backup]# ls
[root@backup /backup]#
说明: /shuai/要是空目录,不是空目录会替换
d.替代查看命令(ls)
[root@nfs01 ~]# rsync /etc/hosts
-rw-r--r-- 349 2019/05/18 09:53:23 hosts
#1. 本地备份数据
Local: rsync [OPTION...](参数) SRC(要备份的数据)... [DEST](备份到哪里去)
#2. 远程备份数据
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
#USER-----用哪个用户身份拉取数据(默认以当前用户)
#HOST-----指定远程主机IP地址或主机名称(本地hosts做好解析)
#SRC------要拉取的数据信息
#dest-----保存到本地的路径
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
#SRC------本地要进行远程传输备份的数据
#USER------用哪个用户身份推送数据(默认以当前用户)
#HOST-----指定远程主机IP地址或主机名称(本地hosts做好解析)
#dest-----保存到远程主机的路径信息
#3.守护经常方式备份数据
#a.可以进行一些配置管理
#b.可以进行安全策略管理
#c.可以实现自动传输数据
5.rsync守护进程的部署
(1)下载安装软件
[root@nfs01 ~]# rpm -qa rsync | yum install rsync -y
rsync-3.1.2-4.el7.x86_64
(2)编写配置文件
uid = rsync --- 指定管理备份目录的用户
gid = rsync --- 指定管理备份目录的用户组
port = 873 --- 定义rsync备份服务的网络端口号
fake super = yes --- 将rsync虚拟用户伪装成为一个超级管理员用户
use chroot = no --- 和安全相关的配置
max connections = 200 --- 最大连接数 同时只能有200个客户端连接到备份服务器
timeout = 300 --- 超时时间(单位秒)
pid file = /var/run/rsyncd.pid --- 记录进程号码信息(让程序快速停止进程,判断一个服务是否正在运行)
lock file = /var/run/rsync.lock --- 锁文件
log file = /var/log/rsyncd.log --- rsync服务的日志文件 用于排错分析问题
ignore errors --- 忽略传输中的简单错误
read only = false --- 指定备份目录是可读可写
list = false --- 使客户端可以查看服务端的模块信息
hosts allow = 172.16.1.0/24 --- 允许传输备份数据的主机(白名单)
hosts deny = 0.0.0.0/32 --- 禁止传输备份数据的主机(黑名单)
auth users = rsync_backup --- 指定认证用户
secrets file = /etc/rsync.password --- 指定认证用户密码文件 用户名称:密码信息
[backup] --- 模块信息
comment = "backup dir by shuai"
path = /backup --- 模块中配置参数 指定备份目录
(3)创建虚拟用户
[root@nfs01 ~]# useradd rsync -M -s /sbin/nologin
[root@nfs01 ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
(4)创建服务认证密码文件并更改文件权限
[root@nfs01 ~]# echo "rsync_backup:shuai123 " > /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
rsync_backup:shuai123
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll /etc/rsync.password
-rw------- 1 root root 23 Jul 29 15:38 /etc/rsync.password
(5)创建备份目录并更改目录的属主属组
[root@backup ~]# mkdir /backup
[root@backup ~]# mkdir /backup
[root@backup ~]# chown rsync.rsync /backup/
[root@backup ~]#
[root@backup ~]# ll /backup/ -d
drwxr-xr-x 2 rsync rsync 6 Jul 29 15:44 /backup/
(6)启动服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
(7)rsync守护进程语法
Access via rsync daemon:
#客户端做拉的操作:恢复数据
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
#客户端做推的操作:备份数据
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
#SRC:要推送备份数据信息
#[USER@]:指定认证用户信息
#HOST:指定远程主机的IP或者主机名称
#::DES:备份服务器的模块信息
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
(8)在客户端测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::backup
Password:
sending incremental file list
hosts
sent 221 bytes received 43 bytes 58.67 bytes/sec
total size is 349 speedup is 1.32
(9)rsync在客户端配置
#1.创建密码文件
[root@nfs01 ~]# echo "123" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
#2.进行免交互传输测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::backup --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 136.00 bytes/sec
total size is 349 speedup is 5.13
6.rsync参数含义
含义 | 参数 |
---|---|
-v –verbose | 显示详细的传输信息 |
-a –archive | 命令的归档参数(包含rtopgDl) |
-r –recursive | 递归参数 |
-t –time | 保持文件属性的修改时间信息不变 |
-o –owner | 保持文件的属主信息不变 |
-g –group | 保持文件的属组信息不变 |
-p –perms | 保持文件权限不变 |
-D — | 保持设备文件信息不变 |
-l –link | 保持链接文件属性不变 |
-L | 保持链接文件的数据信息不变 |
-P | 显示同步过程及传输时的进度信息 |
–exclude=PATTERN | 指定排除不需要传输的文件(指定单个文件) |
–exclude-from=file | 排除指定的数据不被传输(批量) |
–bwlimt=RATE | 限制传输的速率 |
–delete | 无差异同步信息(慎用) |
ps:如何让-o和-g参数生效,需要将配置文件的uid和gid改为root,将fake super参数注释。
7.守护进程企业多应用
(1)守护进程多模块功能配置
1.在rsync配置文件中添加相应的模块
[backup]
comment = "backup dir by a!shuai"
path = /backup
[shuai]
comment = "backup dir by a!shuai"
path = /shuai
2.创建对应的目录
[root@backup ~]# mkdir -p /shuai
3.修改目录的属主属组
[root@backup ~]# chown rsync.rsync /shuai
[root@backup ~]# ll -d /shuai
drwxr-xr-x 2 rsync rsync 23 Jul 29 11:30 /shuai
4.重启rsyncd服务
[root@backup ~]# systemctl restart rsyncd
[root@nfs01 /]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::shuai --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 221 bytes received 43 bytes 528.00 bytes/sec
total size is 349 speedup is 1.32
[root@backup ~]# ls /shuai
shuai.txt
(2)守护进程的排除功能
1.环境准备
[root@nfs01 /shuai]# mkdir -p /shuai/{a..c}
[root@nfs01 /shuai]# touch /shuai/{a..c}/{1..3}.txt
[root@nfs01/shuai]# tree /shuai
/shuai
├── a
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
├── b
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
└── c
├── 1.txt
├── 2.txt
└── 3.txt
3 directories, 9 files
# 需求01: 将/shuai目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录不要做备份
[root@nfs01 /shuai]# rsync -avz /shuai --exclude /shuai/b/1.txt --exclude=/shuai/c/ rsync_backup@172.16.1.31::backup --password-file=/etc/rsync.password
sending incremental file list
shuai/
shuai/a/
shuai/a/1.txt
shuai/a/2.txt
shuai/a/3.txt
shuai/b/
shuai/b/2.txt
shuai/b/3.txt
# 需求02: 将/shuai目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录1.txt 3.txt文件不要备份
a.编写排除文件
[root@nfs01 /]# cat exclub.txt
/shuai/b/1.txt
/shuai/c/1.txt
/shuai/c/3.txt
[root@nfs01 /shuai/c]# rsync -avz /shuai --exclude-from=/exclub.txt rsync_backup@172.16.1.31::backup --password-file=/etc/rsync.password
sending incremental file list
shuai/
shuai/a/
shuai/a/1.txt
shuai/a/2.txt
shuai/a/3.txt
shuai/b/
shuai/b/2.txt
shuai/b/3.txt
shuai/c/
shuai/c/2.txt
sent 460 bytes received 158 bytes 1,236.00 bytes/sec
total size is 0 speedup is 0.00
(3)守护进程备份目录
[root@nfs01 /]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::backup/10.0.0.41/ --password-file=/etc/rsync.password
[root@backup /backup]# ls
10.0.0.41
(4)守护进程的访问控制配置
[root@backup /backup]# cat /etc/rsyncd.conf
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
(5)守护进程的列表功能配置
[root@backup /backup]# cat /etc/rsyncd.conf
list = false
[root@nfs01 ~]# rsync rsync_backup@172.16.1.31::
backup "backup dir by a!shuai"
shuai "backup dir by a!shuai"