Day 41 Rsync备份

1.1 Rsync基本概述

rsync是一款开源的备份工具,可以在不同主机之间进行同步

可实现全量备份增量备份,因此非常适合用于架构集中式备份异地备份等应用。

rsync官方地址:传送门

rsync监听端口873

rsync运行模式C/S   客户端/服务端        B/S 浏览器/服务端

rsync常见的两种备份方式

完全备份   增量备份

                               

Day 41 Rsync备份_第1张图片

Day 41 Rsync备份_第2张图片

1.2 Rsync应用场景

    上传(推)   下载(拉)

关于数据同步的两种方式

1.2.1 : 所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)

Day 41 Rsync备份_第3张图片

1.2.2 : rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大

Day 41 Rsync备份_第4张图片

1.2.3 大量服务器备份场景

Day 41 Rsync备份_第5张图片

1.2.4 异地备份实现思路

Day 41 Rsync备份_第6张图片

1.3 Rsync传输模式

Rsync大致使用三种主要的数据传输方式

1.3.1 本地方式

cp                    PC      U

        Local:  rsync [OPTION...] SRC... [DEST]

        [root@backup ~]# rsync /etc/passwd /tmp/

        [root@backup ~]# ls /tmp/passwd

        /tmp/passwd

1.3.2     远程方式scp

         Access via remote shell: 远程传输

         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]  下载(拉)

         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST    上传(推)

           下载pull

    [root@nfs ~]# pwd

    /root

    [root@nfs ~]# echo "This Nfs" > file

    [root@backup ~]# rsync -avz [email protected]:/root/file /opt/

    [root@backup ~]# cat /opt/file

    This Nfs

   

    上传push(将backupfile2文件上传至NFS服务器的/mnt目录)

    [root@backup ~]# pwd

    /root

    [root@backup ~]# echo "This Rsync" > file2

    [root@backup ~]# rsync -avz /root/file2 [email protected]:/mnt

    [root@nfs ~]# cat /mnt/file2

    This Rsync

   

    推送目录(推送/root/目录下面的所有文件和目录,不会推送/root/目录本身)

    [root@backup ~]# rsync -avz /root/ [email protected]:/tmp

    推送目录,推送目录本身以及目录下面的所有文件

    [root@backup ~]# rsync -avz /root [email protected]:/tmp

   

    远程方式存在的缺陷:

            1.需要使用系统用户(不安全)

            2.使用普通用户(权限存在问题)

            3.需要走ssh协议

守护进程(服务,持续后台运行)

    Access via rsync daemon:    守护进程方式传输

    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 下载

    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST  上传

 

1.4 Rsync服务实践

角色   外网IP(NAT)             内网IP(LAN)  主机名

Rsync服务端     eth0:10.0.0.41    eth1:172.16.1.41      backup

Rsync客户端     eth0:10.0.0.31    eth1:172.16.1.31      nfs

1.4.1 安装

[root@backup ~]# yum install rsync -y

1.4.2 配置rsync

#查询配置文件存放的路径

[root@backup ~]# rpm -qc rsync

/etc/rsyncd.conf

配置rsync

[root@backup ~]# cat /etc/rsyncd.conf

#全局模块

uid = rsync                             运行进程的用户

gid = rsync                             运行进程的用户组

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.password      定义rsync服务用户连接认证密码文件路径

log file = /var/log/rsyncd.log

#####################################

#局部模块

[backup]                                    定义模块信息

comment = welcome to oldboyedu backup!      模块注释信息

path = /backup                              定义接收备份数据目录

 

1.4.3 创建用户(运行rsync服务的用户身份)

#1.创建rsync账户,不允许登录不创建家目录

[root@backup ~]# useradd -M -s /sbin/nologin rsync

#2.创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主

[root@backup ~]# mkdir /backup

[root@backup ~]# chown -R rsync.rsync /backup/

1.4.4 创建虚拟用户密码文件(用于客户端连接时使用的用户)

#3.创建虚拟用户和密码,并赋予600权限

[root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password

[root@backup ~]# chmod 600 /etc/rsync.password

1.4.5 启动rsync服务,并加入开机自启

[root@backup ~]# systemctl start rsyncd

[root@backup ~]# systemctl enable rsyncd

启动后检查对应端口

[root@bogon ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   

tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4758/rsync

 

1.4.6 Rsync客户端配置,配置密码并设置权限

    Access via rsync daemon:    守护进程方式传输

    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 下载

    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST  上传

 

1.将客户端的/etc/passwd 推送至 rsync服务端[backup]

              rsync [OPTION...] SRC... [USER@]HOST::DEST

[root@nfs ~]# rsync -avz /etc/passwd [email protected]::backup

 

2.rsync服务端模块[/backup]下载至本地

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

[root@nfs ~]# rsync -avz [email protected]::backup /opt

 

3.同步时不输入密码[第一种方式,sersync]

[root@nfs ~]# echo "1" >/etc/rsync.password

[root@nfs ~]# chmod 600 /etc/rsync.password

rsync -avz [email protected]::backup /opt --password-file=/etc/rsync.password

 

4.同步时不输入密码[第二种方式:写脚本时使用]

export RSYNC_PASSWORD=1

[root@nfs ~]# rsync -avz [email protected]::backup /opt 

 

强制一致性 pc  ->  U盘保持一致(--delete

[root@nfs ~]# rsync -avz /root [email protected]::backup --delete

限速

rsync -avzP --bwlimit=1 /opt/test.dosk  [email protected]::backup

 

1.5 Rsync备份案例

统一所有的目录站点是/backup

1.5.1  备份什么

        1.系统重要的配置文件

        /etc/fstab /var/spool/cron/root

        2.服务的配置文件

        /etc/rsyncd.conf

        3.日志

        /var/log/secure /var/log/message

        4.脚本

        /server/scripts

1.5.2  怎么备份

    /backup/nfs_172.16.1.31_2018_09_05

    /backup/nfs_172.16.1.31_2018_09_06

    /backup/nfs_172.16.1.31_2018_09_07

1.5.3  编写脚本

    [root@nfs ~]# echo $(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)

nfs_172.16.1.31_2018-09-05

    [root@nfs ~]# mkdir /server/scripts -p

   

1.6     Rsync备份思考

1.我要备份什么        xxxxx

2.我要怎么备份       tar

3.我要将数据推送给谁 (备份服务器)