​    备份服务-rsync    ​

 

备份服务器存在意义:

1 将所有数据信息进行汇总收集   ELK 分析日志软件

2 可以将数据信息进行还原恢复

Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。

全量备份:每次同步过程,都是将全部数据重新保存备份

增量备份:每次同步过程,只是将变化的数据进行保存备份

增量备份实现是基于算法实现的:

1)在传输数据文件前, 比较每个文件属性信息

2) 基于算法加密值原理, 比较每个文件数值不同

rsync软件功能介绍

类似于 cp 命令 -- 实现本地备份传输数据

类似于scp 命令 -- 远程备份传输数据

类似于 rm 命令 -- 实现无差异同步备份

类似于 ls 命令 -- 本地文件信息查看

rsync 命令属于1 v 4 的命令

备份服务软件3种工作方式

1 本地数据备份

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

cp -a /etc/hosts   /tmp/hosts_cp

   rsync -a /etc/hosts   /tmp/hosts_rsync

2 远程数据备份

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

rsync -avz root@172.16.1.41:/backup/week01/  /tmp/


Push: rsync [OPTION...] SRC... [USER@]HOST:DEST      推方式

rsync -avz /backup/week01/  root@172.16.1.41:/backup/  

需要备份数据服务器:

pull  将远程备份服务器的数据进行获取到本地,将数据需要进行还原

push  将本地主机中数据进行传输备份服务器中,实现数据备份操作


备份服务器:

pull:将所有服务器中重要数据进行获取,保存在本地主机中

push:将备份服务器数据推送到远程主机上, 用于数据还原操作

3 守护进程备份数据

Access via rsync daemon:

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

rsync -avz  本地备份数据  认证用户@172.16.1.41::模块名称

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

rsync -avz  认证用户@172.16.1.41::模块名称  本地目录

守护进程  vs  远程备份

1)需要开启一个备份服务端程序

2)可以控制同时存储数据访问量    

3)可以实现访问安全控制机制    

4) 数据备份过程需要有认证禁止

5)可以实现免交互过程传输数据


rsync备份服务部署

部署环境:

CentOS Linux release 7.8.2003 (Core)

服务端部署

1查看软件程序是否部署

[root@backup tools 22:04:10]]# rpm -qa rsync

rsync-3.1.2-10.el7.x86_64

2编写服务配置文件

vim /etc/rsyncd.conf

uid = rsync    

gid = rsync      

port = 873

fake super = yes  

use chroot = no  

max connections = 200  

timeout = 300          

pid file = /var/run/rsyncd.pid  

lock file = /var/run/rsync.lock  

log file = /var/log/rsyncd.log  

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 oldboy"  

path = /backup

3创建一个虚拟用户

[root@backup backup 22:16:18]]# useradd -s /sbin/nologin -M rsync

4创建数据备份目录/修改数据目录属主权限

[root@backup backup 22:20:05]]# mkdir /backup/

[root@backup backup 22:17:44]]# chown -R rsync.rsync /backup/

5创建本地密码文件

[root@backup backup 22:24:23]]# echo "rsync_backup:test123" >/etc/rsync.password

[root@backup backup 22:25:24]]# chmod 600 /etc/rsync.password  #这里只有root用户可以查看

6启动服务程序

[root@backup backup 22:27:00]]# systemctl start rsyncd

[root@backup backup 22:27:04]]# systemctl enable rsyncd

客户端部署

1查看是否部署软件程序

[root@nfs01 ~ 22:28:42]]# rpm -qa rsync

rsync-3.1.2-10.el7.x86_64

2创建密码文件并赋予权限

[root@nfs01 ~]# echo "test123" >/etc/rsync.password

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

如何实现免交互传输数据

免交互传输数据方法一:

echo test123 >/etc/rsync.password

chmod 600 /etc/rsync.password

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup  --password-file=/etc/rsync.password

免交互传输数据方法二:

/etc/profile

export RSYNC_PASSWORD=test123

   rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup  

客户端测试:

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup  --- 测试传输文件

rsync -avz /oldboy   rsync_backup@172.16.1.41::backup   --- 测试传输目录

传输目录结尾没有 / 时, 表示将目录本身以及目录内容都做备份保存

rsync -avz /oldboy/   rsync_backup@172.16.1.41::backup --- 测试传输目录

传输目录结尾有 / 时, 表示只是将目录下面的内容进行保存备份

备份配置文件参数说明

uid = rsync --- 指定映射用户名称

gid = rsync --- 指定映射与用户组名称

port = 873 --- 指定服务端口信息

fake super = yes                    --- 伪装超级管理员用户   rsync映射用户会修改原有文件属主和属组信息

use chroot = no               --- 安全配置功能

max connections = 200 --- 设置并发连接数量

timeout = 300                       --- 设置连接超时时间

pid file = /var/run/rsyncd.pid --- pid文件记录服务进程编号  

                                       1)确认服务状态        有文件存在 服务启动 / 没有文件 服务关闭

2)对服务进行停止操作  kill `cat /var/run/rsyncd.pid`

lock file = /var/run/rsync.lock     --- 备份服务lock文件 限定网络连接数  

log file = /var/log/rsyncd.log      --- 备份服务日志文件  用于排错

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 = "用户备份运维人员数据"   --- 注释说明信息

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

 

备份参数说明:

 -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)

                           归档参数, 将多个经常使用参数进行归档 等价于包含了rlptgoD等参数信息

   -r, --recursive             recurse into directories

                           进行递归针对目录而言

   -l, --links                 copy symlinks as symlinks(软链接)      #一般用不到

                               复制软链接文件,保持链接文件属性不变

   -L, --copy-links            transform symlink into referent file/dir

                               传输软链接会将链接指定源文件数据信息一并复制备份

   -p, --perms                 preserve permissions  

                           保持文件属性权限不变

-t, --times                 preserve modification times

                           保持文件修改时间属性不变

-o, --owner                 preserve owner (super-user only)

                           保持文件属主信息不变 前提配置文件设置映射用户必须是管理员root

   -g, --group                 preserve group

                           保持数组信息不变

   -D                          same as --devices --specials  

                               等价于--devices --specials两个参数作用

   --devices                   preserve device files (super-user only)

                               维持设备文件属性不变   前提配置文件设置映射用户必须是管理员root

   --specials                  preserve special files  

维持设备文件属性不变   前提配置文件设置映射用户必须是管理员root  

   -v, --verbose               increase verbosity

                               显示备份数据过程信息

   -z, --compress              compress file data during the transfer

                           传输数据进行压缩处理   经过外网进行传输备份

   -P                          same as --partial --progress

                           等价于 --partial --progress; 显示文件传输过程 支持大文件断点续传

   --delete                    delete extraneous files from destination dirs

                           从指定目录中删除额外多于文件数据  无差异同步数据

--exclude=PATTERN       exclude files matching PATTERN

                           在备份一个目录时,可以排除目录中部分数据不要进行传输备份

   --exclude-from=FILE     read exclude patterns from FILE

多模块配置应用:

[backup]

comment = "backup user info"  

path = /backup

[sys_backup]                        

comment = "backup system info"  

path = /sys_backup

PS: 新添加模块,对应目录必须创建好


客户端备份数据:分类存储数据

mkdir  /sys_backup

chown   -R    rsync.rsync   /sys_backup

rsync -avz /data01   rsync_backup@172.16.1.41::backup

rsync -avz /data02   rsync_backup@172.16.1.41::sys_backup


2)备份服务子目录创建应用

应用场景:用于分类不同服务器主机备份数据    

   实现方式:在模块后面添加相应子目录信息

客户端备份数据:

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/10.0.0.31/   #只支持创建一级目录


3)备份服务数据排除功能应用

应用场景:在备份一个目录时,可以指定部分信息不要进行备份,提高备份效率

   实现方式:主要应用以下两个参数实现

--exclude=PATTERN                        

--exclude-from=FILE

借助--exclude=PATTERN参数 排除hosts oldboy_dir目录都不要进行备份

rsync -avz /oldboy/  --exclude=hosts  --exclude=oldboy_dir01 rsync_backup@172.16.1.41::backup



借助--exclude-from参数 排除hosts oldboy_dir/01.txt  oldboy_dir/03.txt目录都不要进行备份

编写一个排除数据信息文件

rsync -avz /oldboy/ --exclude-from=/oldboy/exclude.txt rsync_backup@172.16.1.41::backup

4)备份服务无差异同步应用

应用场景:在备份用户数据信息时,可以实现无差异同步数据

实现方式:主要借助 --delete

客户端无差异操作说明

rsync -avz /oldboy/ --delete  rsync_backup@172.16.1.41::backup

PS:在某些场景慎用,容易操作对备份服务数据损坏


5)备份服务访问控制功能应用

应用场景:限制指定用户地址可以访问备份服务 保存数据

实现方式:需要应用配置文件参数设置

hosts allow = 10.0.0.0/24  

   hosts deny = 0.0.0.0/32

   PS:选择其中一种使用,不建议同时开启设置

1) 如果同时开启,白名单匹配放行,黑名单匹配阻止,其余所有访问默认放行

2) 白名单和黑名单配置信息相同时,白名单优先于黑名单


6)备份服务传输限速功能应用

应用场景:在借助外网传输数据信息时,可以起到一定限速作用   网站带宽不足   开发人员

   实现方式:--bwlimit=速率设置   实现限速处理

 

企业全网备份项目说明

   1)备份项目需求说明

所有服务器的备份目录必须都为/backup

  mkdir -p /backup/  


2)要备份的系统配置文件包括但不限于:

      a) 定时任务服务的配置文件 (/var/spool/cron/root) 。

      b) 开机自启动的配置文件 (/etc/rc.local) 。

      c) 日常脚本的目录 (/server/scripts)。         mkdir -p  /server/scripts

      d) 防火墙iptables的配置文件 (/etc/sysconfig/iptables)。 touch /etc/sysconfig/iptables

  tar zcvhf /backup/system_backup.tar.gz  /var/spool/cron/root  /etc/rc.local  /server/scripts  /etc/sysconfig/iptables


3) Web服务器站点目录假定为(/var/html/www)。

      mkdir -p /var/html/www

      tar zcvhf  /backup/web_backup.tar.gz   /var/html/www


4) Web服务器访问日志路径假定为(/app/logs)

      mkdir -p /app/logs

  tar zcvhf  /backup/weblog_backup.tar.gz   /var/html/www


5) Web服务器保留打包后7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

      find /backup/ -type f  -mtime +7  -delete

6) 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。

      find /backup/ -type f  -mtime +180  -delete

方法1:将数据信息标记出星期信息

  date +%F_%A 

      tar zcvhf /backup/system_backup-`date +%F_%A`.tar.gz    /var/spool/cron/root  /etc/rc.local  /server/scripts  /etc/sysconfig/iptables

      备份服务器操作

  find /backup/ -type f  -mtime +180  ! -name '*.Monday.tar.gz'  -delete


方法2:将周一数据信息单独保存备份

  备份服务器操作

  周一数据:find  /backup/  -type f  -mtime -1  -exec  mv {}  /monday/   \;

  find /backup/ -type f  -mtime +180   -delete


 7) 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。

      备份服务器进行数据备份区分

      /backup/172.16.1.31/  

      /backup/172.16.1.7/

      思路一:规划子目录信息  推荐方式

      客户端主机

      mkdir  /backup/172.16.1.31/

      rsync  -avz  /backup/  rsync_backup@172.16.1.41::backup    

      mkdir  /backup/172.16.1.7/

  rsync  -avz  /backup/  rsync_backup@172.16.1.41::backup


  思路二:在备份传输数据时,可以添加子目录信息

  rsync  -avz  /backup/  rsync_backup@172.16.1.41::backup/172.16.1.31/  

  rsync  -avz  /backup/  rsync_backup@172.16.1.41::backup/172.16.1.7/  

8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。

      1)如何进行数据完整性验证

     客户端先进行验证:

 find /backup/ -type f -mtime -1|xargs md5sum >finger.txt


 服务端在进行验证:

 find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/backup.log 2>/dev/null


  2) 如何发送邮件信息:

1)配置发送邮件邮箱

IMAP/SMTP服务必须是开启状态

获取邮箱的授权码信息 -----        izsoqcipaqvjbcaf

备份服务-rsync_操作系统

备份服务-rsync_操作系统_02

2)编写系统邮件服务配置文件

1 使用qq邮箱

vim /etc/mail.rc

set from=851127525@qq.com                                  from -发邮件的邮件地址

smtp=smtp.qq.com                                                    smtp--外部smtp服务器的地址,使用相应的smtp地址

set smtp-auth-user=851127525                                 smtp-auth-user--smtp服务器认证的用户名

smtp-auth-password="izsoqcipaqvjbcaf"                   smtp-auth-password--认证密码,注意是授权码

smtp-auth=login                                                          smtp-auth--邮件认证方式

systemctl restart postfix

----------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------

2使用163邮箱

set from=gcssshitou@163.com                                    from-发邮件的邮件地址

smtp=smtp.163.com                                                     smtp--外部smtp服务器的地址,使用相应的smtp地址

set smtp-auth-user=gcssshitou                                     smtp-auth-user--smtp服务器认证的用户名

smtp-auth-password="SRBBDAEQNLDCVMAK"         smtp-auth-password--认证密码,注意是授权码

smtp-auth=login                                                             smtp-auth--邮件认证方式

3)测试功能

echo 1234567890|mail -s test_oldboy  851127525@qq.com

echo 1234567890|mail -s test_oldboy  gcssshitou@163.com

2)备份项目实施阶段

  编写客户端备份脚本:

  #!/bin/bash

      host_IP=$(hostname -i)

      backup_data="./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables"


      #01. 创建存储数据目录

      mkdir -p /backup/$host_IP/


      #02. 将数据本地保存压缩备份

      mkdir -p /server/scripts  

      touch /etc/sysconfig/iptables

      cd /

      tar zchf  /backup/$host_IP/sys_backup_$(date +%F_%A -d "-1 day").tar.gz $backup_data

  ================================

  每天0点进行备份

  周日:00:00   周六一天数据   显示的是周日时间 -1 == 周六

  周一:00:00   周日一天数据   显示的是周一时间 -1 == 周日

  周二:00:00   周一一天数据   显示的是周二时间 -1 == 周一

  ===============================


      #03. 将当天生成备份文件进行指纹验证,生成指纹文件

      find /backup -type f -name "*.tar.gz" -mtime -1 | xargs md5sum >/backup/$host_IP/finger.txt


      #04. 实现数据远程备份

      rsync -az /backup/  rsync_backup@172.16.1.41::backup  --password-file=/etc/rsync.password


      #05. 将历史数据信息进行清理

      find /backup/ -type f -name "*.tar.gz" -mtime +7 -delete

  编写服务端备份脚本:

  #!/bin/bash

      #01. 对数据完整性进行验证

      find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/backup.log 2>/dev/null


      #02. 将验证结果进行通知

      mail -s "`date +%F_%A` backup_info" 851127525@qq.com


      #03. 将历史数据进行清理

      find /backup/ -type f  -mtime +180  ! -name '*.Monday.tar.gz'  -delete