分享

备份服务-rsync

 Coder编程 2022-05-11 发布于北京

备份服务器存在意义:
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


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 </tmp/backup.log

#03. 将历史数据进行清理
find /backup/ -type f -mtime +180 ! -name '*.Monday.tar.gz' -delete

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多