2019-04-15-day32 rsync服务及搭建备份服务器

第1章 rsync服务及搭建备份服务器

1.1 什么是Rsync

  Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据复制(拷贝)的优秀工具。

1.2 全量和增量

全量 全部备份
增量 差异化备份,对更新的那一部分进行备份

1.3 Rsync的作用

  工作中的定时/实时数据备份、本地服务器目录、不同机器、不同机房之间的数据备份都可以使用Rsync完成。

1.4 Rsync的功能特性

  1. 支持拷贝普通文件与特殊文件,如链接文件,设备文件等。
  2. 支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
  3. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
  4. 可实现增量复制,既只复制发生变化的数据,因此数据传输效率很高。
  5. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)。
  6. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
  7. 支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像

1.5 增量复制原理

使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制。

版本 复制原理
Rsync 2.x 比对完所有内容后,对差异的内容进行复制
Rsync 3.x 一边比对文本内容,一边对差异进行复制。

1.6 Rsync三种工作模式介绍

1.6.1 本地(local)

在本地使用,rsync就是一个命令。
语法格式:

rsync [OPTION...] SRC... [DEST]
rsync命令 参数选项 [源目录或文件] 目的目录或文件

命令作用:

  1. 把数据从一个地方复制到另一个地方(仅在一台机器增量),相当于cp命令。
  2. 通过加参数实现删除功能,相当于rm命令。
  3. 查看属性信息功能,相当于ls命令。
拷贝实践:

1.一般复制:

[root@backup ~]$ ls /opt                 <===查看目录为空目录
[root@backup ~]$ rsync /etc/hosts /opt   <===拷贝文件hosts 
[root@backup ~]$ ls /opt                 <===查看结果
hosts

2.保持属性复制:

[root@backup ~]$ rsync  -zrtopg /etc/hosts /opt/    <===复制文件
[root@backup ~]$ ls -l /opt/hosts /etc/hosts        <===查看属性
-rw-r--r-- 1 root root 332 4月  12 11:25 /etc/hosts
-rw-r--r-- 1 root root 332 4月  12 11:25 /opt/hosts
删除实践:

1.删除文件内容:

[root@backup ~]$ touch /null.txt     <===创建空文件
[root@backup ~]$ cat /opt/hosts      <===查看原文件内容
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@backup ~]$ rsync -r --delete /null.txt /opt/hosts  <===让后面的hosts和前面的null.txt一样
[root@backup ~]$ cat /opt/hosts    <===查看是否清空

2.删除目录下所有内容:

[root@backup ~]$ mkdir /null                       <===创建空目录
[root@backup ~]$ rsync -r --delete /null/ /opt/    <===让后面opt和前面null目录内容保持一致
[root@backup ~]$ ls /opt/
查看属性:
[root@backup ~]$ rsync /etc/hosts
-rw-r--r--            332 2019/04/12 11:25:32 hosts

重点:只适合rsync

目录 区别
null 目录和目录下的内容
null/ 只是目录下的内容,不含本身

1.6.2 远程shell模式

  借助类似ssh隧道传输数据,适合不同的机器之间的异地拷贝,相当于scp,但是scp是远程全量拷贝。

远程拷贝的两种模式:

1、pull(拉):从远端拉取到本地
语法格式:

rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync命令 参数选项 [认证用户]@[主机地址]:[源路径] 本地路径

2、push(推):从本地推到远端
语法格式:

rsync [OPTION...] SRC... [USER@]HOST:[DEST]
rsync命令 参数选项 本地路径 [认证用户]@[主机地址]:[目标路径]

示例:

[root@nfs01 ~]$ rsync -avz /etc/hosts [email protected]:/opt/  <===加密传输。
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
[email protected]'s password: 
sending incremental file list
hosts

sent 219 bytes  received 35 bytes  14.51 bytes/sec
total size is 332  speedup is 1.31

检查:

[root@backup ~]$ cd /opt/
[root@backup /opt]$ ls
hosts

以下两条命令是等价的。其中:

参数 含义
-e ssh 指定使用ssh通道
-p 22 指定使用22端口
rsync -avz /etc/hosts [email protected]:/opt/
rsync -avz /etc/hosts -e "ssh -p 22" [email protected]:/opt/

示例:

[root@nfs01 ~]# rsync -avz /etc/hosts -e "ssh -p 22" [email protected]:/opt/
[email protected]'s password: 
sending incremental file list

sent 44 bytes  received 12 bytes  22.40 bytes/sec
total size is 332  speedup is 5.93

pull(拉)的命令:

rsync -avz [email protected]:/opt/hosts /opt
rsync -avz -e "ssh -p 22" [email protected]:/opt/hosts /opt

1.6.3 rsync守护进程模式

  rsync服务模式:开启后台进程,接受别人访问。
  守护进程模式首先要搭建rsync服务端(即守护进程),然后才能在客户端实现推拉数据。守护进程模式是企业运维的一个重要的模式。

1.7 rsync命令参数

参数 说明
-v --verbose 显示输出过程
-z --compress 压缩
-a --archive 多参数集合(-rtopgDl)
-r --recursive 递归
-t --times 保持修改时间属性
-o --owner 保持属主不变
-p --perms 保持权限不变
-g --group 保持用户组不变
-l --links 保持拷贝软连接
-q --quiet 安静的拷贝
-e 指定传输通道
--bwlimit=KBPS 限制I/O带宽,KBytes per second。
--delete 删除
--exclude 排除
--exclude-from 从文件中排除

企业常用参数组合: -avz或者-vzrtopg

1.8 rsync守护进程模式应用实践

1.8.1 以下操作都是在backup服务器

1.8.1.1 安装rsync命令,若已安装,可以忽略

[root@backup ~]$ rsync --version     <===查看rsync版本
rsync  version 3.1.2  protocol version 31
[root@backup ~]$ yum install rsync   <===安装rsync
1.8.1.2 配置配置文件

备份:

cp /etc/rsyncd.conf{,.ori}

修改文件信息:

cat -n /etc/rsyncd.conf 
 1  #rsync_config_______________start
 2  #created by oldboy
 3  #site: http://www.oldboyedu.com
 4  uid = rsync                        --->管理备份目录的用户
 5  gid = rsync                        --->管理备份目录的用户组
 6  use chroot = no                    --->安全功能,数据是否锁定到备份目录
 7  fake super = yes                   --->不用root用户也可以存储文件的完整属性
 8  max connections = 200              --->最大并发连接数(同时多少客户端访问)
 9  timeout = 600                      --->超时时间
10  pid file = /var/run/rsyncd.pid     --->进程号所在文件
11  lock file = /var/run/rsync.lock    --->锁文件
12  log file = /var/log/rsyncd.log     --->日志文件,查看报错等信息*****
13  ignore errors                      --->忽略错误
14  read only = false                  --->可写
15  list = false                       --->不允许列表
16  hosts allow = 172.16.1.0/24        --->授权哪些主机可以访问
17  hosts deny = 0.0.0.0/32            --->哪些主机不允许访问
18  auth users = rsync_backup          --->远程虚拟连接用户
19  secrets file = /etc/rsync.password --->存放密码的文件(格式为(用户名:密码)  权限:必须为600)
20  [backup]                           --->[模块名]远程访问一般使用模块名访问
21  comment = welcome to oldboyedu backup! --->说明,注释
22  path = /backup/                    --->服务端用户备份的目录(用户和组,rsync.rsync)

创建用户和备份目录:

[root@backup ~]$ useradd rsync                   <===创建用户
[root@backup ~]$ id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
[root@backup ~]$ mkdir -p /backup                <===创建目录
[root@backup ~]$ chown -R rsync.rsync /backup/   <===修改用户和用户组
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月  15 12:12 /backup/
1.8.1.3 启动和检查rsyncd服务

启动:

c6及以前:
rsync --daemon
c7:
systemctl start rsyncd        <===开启服务
systemctl enable rsyncd       <===开启开机自启动
systemctl status rsyncd       <===检查服务状态

检查进程和端口:

[root@backup ~]$ ps -ef|grep sync|grep -v grep  <===检查进程
root       7521      1  0 11:39 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup ~]$ netstat -lntup|grep 873   <===检查端口
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      7521/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      7521/rsync 
[root@backup ~]$ lsof -i :873   <===检查端口
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   7521 root    3u  IPv4  41439      0t0  TCP *:rsync (LISTEN)
rsync   7521 root    5u  IPv6  41440      0t0  TCP *:rsync (LISTEN)
1.8.1.4 配置密码文件
[root@backup ~]$ echo "rsync_backup:oldboy" > /etc/rsync.password
[root@backup ~]$ chmod 600 /etc/rsync.password
[root@backup ~]$ cat /etc/rsync.password
rsync_backup:oldboy
[root@backup ~]$ ll /etc/rsync.password
-rw------- 1 root root 20 4月  15 11:52 /etc/rsync.password

到这里rsync服务端已配置完成

1.8.2 以下操作在客户端服务器

在客户端认证密码,有两种方法:(可以二选一)
方法1:认证密码文件

[root@nfs01 ~]$ echo "oldboy" > /etc/rsync.password
[root@nfs01 ~]$ chmod 600 /etc/rsync.password
[root@nfs01 ~]$ cat /etc/rsync.password
oldboy
[root@nfs01 ~]$ ll /etc/rsync.password
-rw------- 1 root root 7 4月  15 11:55 /etc/rsync.password

方法2:配置特殊变量$RSYNC_PASSWORD

[root@nfs01 ~]$ echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc 
[root@nfs01 ~]$ tail -1 /etc/bashrc 
 export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]$ . /etc/bashrc 
[root@nfs01 ~]$ echo $RSYNC_PASSWORD
oldboy

到这里rsync客户端 nfs01 配置完成

1.8.3 守护进程模式,客户端rsync的命令语法

配置服务器端守护进程,实现数据传输:

  1. 服务器端守护进程。
  2. 客户端执行命令。
1.8.3.1 Pull(拉):从远端拉取到本地。

语法1(常用):

rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync命令 参数选项 [虚拟用户]@[主机地址]::[模块名] 本地路径

语法2:

rsync [OPTION...] rsync://[USER@]HOST::SRC... [DEST]
rsync命令 参数选项 rsync://[虚拟用户]@[主机地址]/[模块名] 本地路径
1.8.3.2 Push(推):从本地推到远端。

语法1(常用):

rsync [OPTION...] [DEST] [USER@]HOST::SRC...
rsync命令 参数选项 本地路径 [虚拟用户]@[主机地址]::[模块名]

语法2:

rsync [OPTION...] [DEST] rsync://[USER@]HOST::SRC...
rsync命令 参数选项 本地路径 rsync://[虚拟用户]@[主机地址]/[模块名]

1.8.4 测试成果与报错解决方法

报错1:

[root@nfs01 ~]$ rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

原因分析:无效的UID:rsync,需要添加用户rsync,并且发现没有/backup目录,需要创建目录,并将用户和用户组都改为rsync。
解答:

[root@backup ~]$ useradd rsync
[root@backup ~]$ id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
[root@backup ~]$ mkdir -p /backup
[root@backup ~]$ chown -R rsync.rsync /backup/
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月  15 12:12 /backup/

报错2:

[root@nfs01 ~]$ rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
rsync: chgrp ".hosts.YDuTjO" (in backup) failed: Operation not permitted (1)

sent 223 bytes  received 124 bytes  694.00 bytes/sec
total size is 332  speedup is 0.96
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

原因分析:/etc/rsyncd.conf文件内缺少参数,导致文件的存储属性不完整。
解答:增加如下参数到/etc/rsyncd.conf

fake  super  = yes    <===增加的参数:不用root用户也可以存储文件的完整属性。
This allows the full attributes of a file to  be  stored  without having to have the daemon actually running as root.
[root@backup ~]$ grep fake /etc/rsyncd.conf
fake super = yes
改完配置,要重启服务:
[root@backup ~]$ systemctl restart rsyncd

参数添加完后再测试:结果成功,没有报错

[root@nfs01 ~]$ rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
hosts

sent 89 bytes  received 49 bytes  276.00 bytes/sec
total size is 332  speedup is 2.41
服务端检查结果:
[root@backup ~]$ ls /backup/
hosts
如果客户端按照环境变量的方式配置,则可以忽略--password-file=/etc/rsync.password参数。
[root@nfs01 ~]$ rsync -avz /etc [email protected]::backup
sending incremental file list

sent 52,071 bytes  received 644 bytes  105,430.00 bytes/sec
total size is 31,244,350  speedup is 592.70

测试增量

[root@nfs01 ~]$ touch /etc/oldboy.txt
[root@nfs01 ~]$ rsync -avz /etc [email protected]::backup
sending incremental file list
etc/oldboy.txt

sent 52,098 bytes  received 655 bytes  105,506.00 bytes/sec
total size is 31,244,350  speedup is 592.28
第二种语法:
[root@nfs01 ~]$ rsync -avz /etc rsync://[email protected]/backup
sending incremental file list

sent 52,070 bytes  received 644 bytes  105,428.00 bytes/sec
total size is 31,244,350  speedup is 592.71

你可能感兴趣的:(2019-04-15-day32 rsync服务及搭建备份服务器)