Linux全网备份详解(md5sum详解、postfix服务配置详解)

全网备份项目
  • 根据需求搭建环境
    • 三台服务器准备
      • backup备份服务器
      • nfs存储服务器
      • web服务器
  • 按照需求编写脚本
    • 所有服务器的备份目录必须都为/backup
    • 要备份的系统配置文件包括但不限于
      • 定时任务服务的配置文件(var/spool/cron/root)(适合web和nfs服务器)
      • 开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)
      • 日常脚本的目录(/server/scripts)
      • 防火墙iptables的配置文件(/etc/sysconfig/iptables)
      • 自己思考下还有什么需要备份呢
    • web服务器站点目录家定位/var/html/www
    • web服务器A访问日志路径假定为/app/logs
    • web、nfs服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,太多硬盘会满)
    • backup备份服务器,保留每周一的所有数据副本,其他要保留6个月的数据副本
      • 部署好rsync守护进程服务
    • 备份服务器上要按照备份数据服务器的内网ip为目录保存备份,备份的文件按照时间名字保存
    • 需要确保备份的数据尽量完整正确,在备份服务器对备份的数据进行检查,把备份的成功及失败结果发给系统管理员邮箱中。在备份服务器上发送邮件
  • 进行功能测试
备份客户端要完成的工作
  • 创建需要的目录

    #要先创建好自己的ip目录,方便后续的数据完整性验证
    mkdir /backup/10.0.0.31 -p
    
    mkdir /server/scripts
    
    mkdir /var/html/www -p
    mkdir /app/logs -p
    
  • 压缩要打包的文件

    cd /
    tar zchf /backup/10.0.0.31/system_backup_$(date +%F).tar.gz ./var/spool/cron/root ./etc/rc.local  ./server/scripts ./etc/sysconfig/iptables
    
    tar zchf /backup/10.0.0.31/www_backup.tar.gz ./var/html/www
    tar zchf /backup/10.0.0.31/www_log_backup.tar.gz ./app/logs
    
    
    ps:使用相对路径不会有报错那个/
    
  • 7天以前的数据进行删除

    find /backup -type -f -mitime +7 | xargs rm -rf 
    
  • 传输之前生成指纹文件,验证数据的完整性。

    • 要重定向,不要追加
      • 以前的数据已经验证过了,没有意义存在。
    • 指纹文件要排除掉进行md5。
      • 没有必要进行对比,另外这个文件进行对比的时候会failed
    find /backup/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/backup/10.0.0.31/finger.txt
    
  • 每天将数据传到备份服务器

    • 在传输的时候写上ip,自动创建目录,但是会影响后面的数据完整性的验证,本地和服务端的文件路径不一样,生成的md5值也不一样

      rsync -avz /backup/ rsync_backup@172.16.1.41::backup/10.0.0.31/ ---password-file=/etc/rsync.password
      
    • 如果之前没有创建,要在本地先创建好目录,在传输过去

      mkdir /backup/10.0.0.31
      mv /backup/* /backup/10.0.0.31
      
      rsync -avz /backup/ rsync_backup@172.16.1.41::backup ---password-file=/etc/rsync.password
      
备份服务端要完成的工作
  • 创建备份目录

    mkdir /backup
    
  • 删除半年前的数据,但要保留每周一的数据

    #方法一:在备份数据的时候文件名命名为date "+%F %A"
    find /backup/ -type f -mitime +180 ! -name "*Monday.tar.gz" | xargs rm -rf
    
    #方法二:将每周一传输的数据进行单独保存
    
  • 验证数据的完整性:使用md5sum

    • 验证单个指纹文件

      md5sum -c /backup/10.0.0.31/finger.txt
      
    • 验证多个指纹文件

      find /backup/ -type f -name "finger.txt"|xargs md5sum -c &> /tmp/check.txt
      
md5sum工作原理
  • 打开一个指纹文件,将信息记录到缓存中
  • 根据指纹文件的路径信息,生成md5数值信息
  • 将新生成的md5数值和原有指纹文件中的数值进行比较
  • 如果相同显示结果为ok、失败为failed
如何实现发送邮件
  • 配置163邮箱

    • 开启IMAP/SMTP服务

    • 生成授权密码,牢记

    • 查看服务器地址

      POP3服务器: pop.163.com
      SMTP服务器: smtp.163.com
      IMAP服务器: imap.163.com
      
  • 编写linux服务邮件相关配置

    vim /etc/mail.rc
    在最后面添加上以下内容
    
    
    # 指定邮箱
    set from=xxx@163.com
    # 邮箱协议(由于阿里云默认禁用TCP 25端口,我们可以使用465端口)
    set smtp=smtps://smtp.163.com:465
    # 邮箱账号
    set smtp-auth-user=xxx@163.com
    # 邮箱授权码,后台里面去授权
    set smtp-auth-password=xxxxxxxxxx
    # 登陆方式
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/root/.certs
    
  • 解决服务启动报错

    vi  /etc/postfix/main.cf
    inet_interfaces = localhost
    
    inet_protocols = all
    
    改成:
    
    inet_interfaces = all
    
    inet_protocols = all
    
  • 重启邮件服务

    systemctl restart postfix.service
    
  • 请求数字证书

    [root@server-center ~]# mkdir -p /root/.certs/    ###创建目录,用来存放证书
    
    [root@server-center ~]# echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
    
    ###添加一个ssl证书到证书数据库中
    [root@server-center ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
    
    ###添加一个Global证书到证书数据库中
    [root@server-center ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt 
    
    ###列出目录下的数字证书
    [root@server-center ~]# certutil -L -d /root/.certs   
    
  • 解决证书不被信任问题

    cd /root/.certs/
    
    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt
    
    出现以下提示,表示 添加成功:
    
    Notice: Trust flag u is set automatically if the private key is present.
    
  • 发送邮件测试

    echo "邮件内容" | mail -s "邮件标题"  对方邮箱地址
    
    或将文件内容发送过去
    
    cat main.py | mail -s '邮件标题 对方邮箱地址
    
编写全网备份脚本
客户端脚本
#!/bin/bash

Backup_dir="/backup"
IP_info=`curl cip.cc | awk 'NR==1 {print $3}'`

# create backup dir
mkdir -p $Backup_dir/$IP_info

# tar backup data
cd /
tar zchf $Backup_dir/stystem_backup_$(date +%F_%A -d "-1day").tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables

# del 7 day ago
find $Backup_dir -type -f -mitime +7 | xargs rm -rf &>/dev/null

# create finger file 
find $Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/backup/$IP_info/finger.txt

# backup push data info
rsync -az $Backup_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#显示脚本执行过程
sh -x backup.sh
服务端脚本,需要先创建backup目录
#!/bin/bash

#del 180 day ago data、remain monday data
find /backup/ -type f -mitime +180 ! -name "*Monday.tar.gz" | xargs rm -rf &>/dev/null

#check backup data 
find /backup/ -type f -name "finger.txt"|xargs md5sum -c &> /tmp/check.txt

#send check mail 
cat /tmp/check.txt | mail -s "check info `date +%F`" 邮箱
实现自动完成全网数据备份(定时任务)
  • 客户端定时任务

    crontab -e
    
    # backup data 
    0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null
    
  • 服务端定时任务

    crontab -e
    
    # check backup data,设置的时间要比客户端设置的时间晚,等传输完成后进行检查并发送邮件
    0 5 * * * /bin/sh /server/scripts/check.sh
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值