zoukankan      html  css  js  c++  java
  • Rsync服务实战

    客户端需求

    1.客户端每天凌晨01点在服务器本地打包备份(系统配置文件、日志文件、其他目录、应用配置等文件)
    2.客户端备份的数据必须存放至以主机名_IP地址_当前时间命名的目录中, 例/backup/nfs-server_172.16.1.31_2018-09-02 
    3.客户端最后通过rsync推送本地已打包好的备份文件至backup服务器
    4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
    

    /backup/
    服务端需求

    1.服务端部署rsync,用于接收客户端推送过来的备份数据
    2.服务端需要每天校验客户端推送过来的数据是否完整
    3.服务端需要每天校验的结果通知给管理员
    4.服务端仅保留6个月的备份数据,其余的全部删除
    

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

    准备环境

    1 安装rsync软件

    [root@backup ~]# yum -y install rsync
    

    p, li { white-space: pre-wrap; }

    2 配置 /etc/rsyncd.conf

    [root@backup backup]# cat /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    log file = /var/log/rsyncd.log
    #####################################
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup
    

    3 创建用户(运行rsync服务的用户身份)

    [root@backup ~]# useradd -M -s /sbin/nologin rsync
    [root@backup ~]# mkdir /backup
    [root@backup ~]# chown -R rsync.rsync /backup/
    

    4 创建虚拟用户密码文件(客户端连接时候使用)

    [root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password
    [root@backup ~]# chmod 600 /etc/rsync.password
    

    5启动 rsync 服务,并加入开机自启

    [root@backup ~]# systemctl start rsyncd
    [root@backup ~]# systemctl enable rsyncd
    

    6检查对应的端口 873

    [root@backup backup]# netstat -lntp
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1391/rsync
    

    7测试 (客户端也安装rsync 但是不启动服务)

    #客户端推送  /etc/passwd 推到 服务端 backup模块
    [root@nfs ~]# rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup
    #客户端下载
    [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
    
    #无密码方式备份 之指定文件
    [root@nfs01 ~]# echo "1" > /etc/rsync.password
    [root@nfs01 ~]# chmod 600 /etc/rsync.password 
    rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.password
    
    #无密码方式备份 之环境变量方式
    [root@nfs01 ~]# export RSYNC_PASSWORD=1
    [root@nfs01 ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
    

    8其他

    强制一致性 pc  ->  U盘保持一致(--delete)
    [root@nfs01 ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/ --password-file=/etc/rsync.password
    
    [root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
    限速
    [root@nfs ~]# dd if=/dev/zero of=/opt/test.dosk bs=1M count=1024
    [root@nfs ~]# rsync -avzP --bwlimit=1 /opt/test.dosk rsync_backup@172.16.1.41::backup
    

    1.脚本,每天01定时执行一次(打包->标记->推送->备份服务器->保留最近7天的文件)

    批量执行

    for i in {1..30};do date -s 2018/08/$i && sh /server/scripts/client_rsync_backup.sh;done
    

    客户端推送脚本

    [root@nfs scripts]# cat /server/scripts/client_rsync_backup.sh
    #!/usr/bin/bash
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    
    #1.定义变量
    Host=$(hostname)
    Addr=$(ifconfig eth1|awk 'NR==2{print $2}')
    Date=$(date +%F)
    Dest=${Host}_${Addr}_${Date}
    Path=/backup
    
    #2.创建备份目录
    [ -d $Path/$Dest ] || mkdir -p $Path/$Dest
    
    #3.备份对应的文件
    cd / && 
    [ -f $Path/$Dest/system.tar.gz ] || tar czf $Path/$Dest/system.tar.gz etc/fstab etc/rsyncd.conf && 
    [ -f $Path/$Dest/log.tar.gz ] || tar czf $Path/$Dest/log.tar.gz  var/log/messages var/log/secure && 
    
    #4.携带md5验证信息
    [ -f $Path/$Dest/flag ] || md5sum $Path/$Dest/*.tar.gz >$Path/$Dest/flag_${Date}
    
    #4.推送本地数据至备份服务器
    export RSYNC_PASSWORD=1
    rsync -avz $Path/ rsync_backup@172.16.1.41::backup
    
    #5.本地保留最近7天的数据
    find $Path/ -type d -mtime +7|xargs rm -rf
    

    2.校验的压缩包(邮箱->md5->结果保存下来->将保存的结果发送给管理员->保留最近180天的数据)

    服务端接收文件并校验发送邮箱

    1.配置邮箱(配发件服务器)

    [root@backup backup]# yum install mailx -y
    #配置邮件服务功能
    [root@backup backup]# cat /etc/mail.rc   
    set from=343264992@163.com
    set smtp=smtps://smtp.163.com:465
    set smtp-auth-user=343264992@163.com
    set smtp-auth-password=aa123456
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/etc/pki/nssdb/
    #测试发邮件                     标题			 收件人				发送内容
    [root@backup backup]# mail -s "test$(date +%F)" 343264992@qq.com </etc/passwd
    
    [root@backup ~]# mkdir /server/scripts -p
    

    2 服务端脚本

    [root@backup ~]# vim /server/scripts/check_backup.sh
    #!/usr/bin/bash
    
    #1.定义全局的变量
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    
    #2.定义局部变量
    Path=/backup
    Date=$(date +%F)
    
    #3.查看flag文件,并对该文件进行校验, 然后将校验的结果保存至result_时间
    find $Path/*_${Date} -type f -name "flag$Date"|xargs md5sum -c >$Path/result_${Date}
    
    #4.将校验的结果发送邮件给管理员
    mail -s "Rsync Backup $Date" 123@qq.com <$Path/result_${Date}
    
    #5.删除超过7天的校验结果文件, 删除超过180天的备份数据文件
    find $Path/ -type f -name "result*" -mtime +7|xargs rm -f
    find $Path/ -type d -mtime +180|xargs rm -rf
    

    定时任务

    	#多台客户端
    [root@nfs ~]# crontab -l
    00 01 * * * /usr/bin/bash /server/scripts/clinet_rsync_backup.sh >/dev/null 2>&1
    
    	#服务端
    [root@backup backup]# crontab -l
    00 05 * * * /usr/bin/bash /server/scripts/check_backup.sh >/dev/null 2>&1
    

    总结

    - 如何增加在一台服务器的备份
        - 1.准备一台服务器(克隆)
        - 2.使用xshell连接服务器
        - 3.拷贝nfs服务器上的备份脚本(打包的内容)
            [root@web01 ~]# rsync -avz root@172.16.1.31:/server  /
            [root@web01 ~]# sh /server/scripts/client_rsync_backup.sh
    
    Rsync推送和拉取
    Rsync守护进程(1.安装  2.配置  3.启动 4.加入开机自启动  5.检查  6.出错看日志 ERROR)
    demo:将客户端nfs基础的数据打包->推送->backup服务器
           将多台服务器的备份数据推送到->backup服务器->1.先校验->2.发送校验结果至管理员
    博主QQ 343264992 QQ群交流:100411237 添加时候请备注博客园
  • 相关阅读:
    div 居中
    [转贴]Linux新增用户和组
    wmsys.WM_CONCAT
    [转]深刻理解Oracle数据库的启动和关闭
    [转]JAVA 程序中使用ORACLE 绑定变量( bind variable )
    考研的一些入门知识
    [转帖]什么是CPU的核心
    js空格处理函数
    [转]Vi 基础命令
    EMPTY_CLOB()/EMPTY_BLOB()使用
  • 原文地址:https://www.cnblogs.com/chengkanghua/p/9600842.html
Copyright © 2011-2022 走看看