首页 > 技术文章 > Linux-Rsync服务

zhangfushuai 2021-05-14 11:00 原文

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" 

 

推荐阅读