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