采用push的方式拉取备份文件
客户端推: 备份数据
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
src 需要推送的备份数据信息
[USER@] 指定认证用户信息***
HOST 远程主机地址
::DEST 备份服务器的模块信息
1..服务端安装rsync,编写配置文件
vim /etc/rsyncd.conf
uid = rsync --- 指定管理备份目录的用户
gid = rsync --- 指定管理备份目录的用户组
port = 873 --- 定义rsync备份服务的网络端口号
fake super = yes --- 将rsync虚拟用户伪装成为一个超级管理员用户
use chroot = no --- 和安全相关的配置
max connections = 200 --- 最大连接数 同时只能有200个客户端连接到备份服务器
timeout = 300 --- 超时时间(单位秒)
pid file = /var/run/rsyncd.pid --- 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行 kill 结合cat命令
lock file = /var/run/rsync.lock --- 锁文件??
log file = /var/log/rsyncd.log --- rsync服务的日志文件 用于排错分析问题
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 --- 模块中配置参数 指定备份目录**备份服务器的目录
2..服务端创建rsync用户 创建密码文件
useradd rsync -M -s /sbin/nologin
echo "rsync_backup:123456" >> /etc/rsync.password
权限600,属主root
4..客户端安装rsync软件,创建纯密码(123456)文件
无需启动rsync服务
密码文件权限600
3..实现免交互传输
首先需要创建备份目录 才能进行测试
第一步: 客户端创建密码文件
echo "123456" >> /etc/rsync.password
chmod 600 /etc/rsync.password
免交互测试:
第二步: 客户端执行: # rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
4..完善备份模块
模块规划:
web服务器:
[web]
comment = "backup dir by oldboy"
path = /backup/web
负载均衡服务器:
[lb]
comment = "backup dir by oldboy"
path = /backup/lb
nfs服务器:
[nfs]
comment = "backup dir by oldboy"
path = /backup/nfs
监控服务器:
[zabbix]
comment = "backup dir by oldboy"
path = /backup/zabbix
管理服务器:
[manager]
comment = "backup dir by oldboy"
path = /backup/manager
5..其他的一些要求
要备份的系统配置文件包括但不限于:
a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)。
b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)。
c.日常脚本的目录(/server/scripts)。
d.防火墙iptables的配置文件(/etc/sysconfig/iptables)。
e.自己思考下还有什么需要备份呢?
web01 nfs01
Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
web01 nfs01
备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
部署好rsync守护进程服务
backup
备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
客服端创建文件夹时使用 mkdir -p /backup/`hostname -i` 命令进行创建
备份:
tar -czvhf /backup/nfs/`hostname -i`/system_data_bak_`date +%F_week%w.tar.gz` /var/spool/cron/root /etc/rc.local /server/scripts /etc/yum.repos.d &> /dev/null
文件校验:
备份时可以使用tar -tf 文件 进行简单查看所备份的文件是否都存在
客户端创建MD5校验文件
find /backup/nfs/`hostname -i`/ -type f -mtime -1 ! -name "finger.txt" | xargs md5sum > /backup/nfs/`hostname -i`/finger.txt
传输:
rsync -avz /backup/nfs/`hostname -i` rsync_backup@172.16.1.41::nfs --password-file=/etc/rsync.password
服务端校验,生成校验信息:
find /backup/ -name "finger.txt" | xarg md5sum -c > /tmp/check.txt
============注意事项=========
如要进行md5sum校验,客户端和服务端的备份路径要一模一样,否则,根据finger.txt中的密文信息,无法校验成功
邮箱通知备份情况:
发送邮件:
配置163邮箱
备份服务器编写配置: vim /etc/mail.rc 最后一行编写
set from=daxdinaive@163.com smtp=smtp.163.com
set smtp-auth-user=daxdinaive@163.com smtp-auth-password=lyl199610 smtp-auth=login
systemctl restart postfix.service
echo "早上8点到新安江集中,晚上再回去"|mail -s "明天计划" daxdinaive@foxmail.com
mail -s "备份情况" daxdinaive@foxmail.com < /tmp/check.txt
系统空间优化:
备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" | xarg rm -rf
Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
find /backup/ -type f -mtime +7 | xargs rm -rf
最后,将命令结合,生成脚本:
客户端:
#!/bin/bash
#delete 7 days ago's files
find /backup/ -type f -mtime +7 | xargs rm -rf
#make up tar.gz
tar -czvhf /backup/nfs/`hostname -i`/system_data_bak_`date +%F_week%w.tar.gz` /var/spool/cron/root /etc/rc.local /server/scripts /etc/yum.repos.d &> /dev/null
#make up finger.txt
find /backup/nfs/`hostname -i`/ -type f -mtime -1 ! -name "finger.txt" | xargs md5sum > /backup/nfs/`hostname -i`/finger.txt
#send tar.gz to backup_server
rsync -avz /backup/nfs/`hostname -i` rsync_backup@172.16.1.41::nfs --password-file=/etc/rsync.password
服务端:
#!/bin/bash
#delete 7 days ago's files
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" | xarg rm -rf
#check backup_file's md5sum
find /backup/ -name "finger.txt" | xarg md5sum -c > /tmp/check.txt
#send e-mail to manager
mail -s "备份情况" daxdinaive@163.com < /tmp/check.txt
优化后:
客户端:
[root@nfs01 scripts]# vim backup.sh
#!/bin/bash
Dir=nfs
#delete 7 days ago's files
find /backup/ -type f -mtime +7 | xargs rm -rf
#make up tar.gz
tar -czvhf /backup/$Dir/`hostname -i`/system_data_bak_`date +%F_week%w.tar.gz` /var/spool/cron/root /etc/rc.local /server/scripts /et
c/yum.repos.d
#make up finger.txt
find /backup/$Dir/`hostname -i`/ -type f -mtime -1 ! -name "finger.txt" | xargs md5sum > /backup/$Dir/`hostname -i`/finger.txt
#send tar.gz to backup_server
rsync -avz /backup/$Dir/`hostname -i` rsync_backup@172.16.1.41::$Dir --password-file=/etc/rsync.password
服务端同旧
网友评论