美文网首页rsync服务jok20190717
Linux运维-day36-综合架构-rsync全网备份

Linux运维-day36-综合架构-rsync全网备份

作者: 文娟_狼剩 | 来源:发表于2019-05-26 11:27 被阅读111次

    一、 需求

    每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
    (备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。

    二、 具体要求如下:

    1)Web服务器A和备份服务器B的备份目录必须都为/backup。 #扩展要求/backup/ip地址命名目录中
    2)Web服务器站点目录假定为(/var/www/html)。
    3)Web服务器本地仅保留7天内的备份。
    4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
    5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。

    三、 全网备份部署过程

    image.png

    四、环境部署

    4.1 模拟环境

    外网 内网 主机名
    rsync服务端 10.0.0.41 172.16.1.41 backup
    rsync客户端 10.0.0.7 172.16.1.7 web01

    4.2 配置rsync服务端

    4.2.1 编写rsync服务配置文件/etc/rsyncd.conf

    [root@backup ~]# cat /etc/rsyncd.conf  
    #rsync server  
    ##created by oldboy 15:01 2019-5-20  
    ##rsyncd.conf start##  
    fake super = yes    
    uid = rsync      
    gid = rsync      
    use chroot = no  
    max connections = 2000    
    timeout = 600     
    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 = 10.0.0.0/24    
    #hosts deny = 0.0.0.0/32      
    auth users = rsync_backup     
    secrets file = /etc/rsync.password 
    #####################################  
    [data]      
    comment = www by old0boy 14:18 2012-1-13    
    path = /data    
    #####################################  [backup]      
    comment = www by wwj 14:18 2019-5-20    
    path = /backup
    

    4.2.2 创建rsync服务虚拟用户rsync

    [root@backup ~]# useradd rsync -M -s /sbin/nologin
    [root@backup ~]# grep 'rsync' /etc/passwd
    rsync:x:1001:1001::/home/rsync:/sbin/nologin
    [root@backup ~]#
    

    4.2.3 创建要备份的目录,并修改备份目录的所有者和所有者属组为rsync

    [root@backup ~]# mkdir -p /backup
     [root@backup ~]# chown -R rsync.rsync /backup
    [root@backup ~]# ls -ld /backup
    drwxr-xr-x 2 rsync rsync 6 May 20 20:55 /backup
    [root@backup ~]#
    

    4.2.4 编辑/etc/rsyncd.conf配置文件,在里面配置backup模块

    #####################################
    [backup]    
    comment = www by wwj 14:18 2019-5-20 #注释
    path = /backup    
    

    4.2.5 创建密码文件,并设置权限为600

    [root@backup ~]# echo "rsync_backup:123456">/etc/rsync.password  
    [root@backup ~]# chmod 600 /etc/rsync.password  [root@backup ~]# ls -ld /etc/rsync.password  -rw------- 1 root root 20 May 20 21:09 /etc/rsync.password  [root@backup ~]#
    

    4.2.6 启动服务

    启动服务:systemctl restart rsyncd
    设置开机自启动:systemctl enable rsyncd
    

    4.2.7 服务端自我检查

    [root@backup ~]# rsync -avz /etc/hostname [rsync_backup@172.16.1.41::backup](mailto:rsync_backup@172.16.1.41::backup)
    

    4.3 配置rsync客户端

    [root@nfs01 ~]# echo "123456" >/etc/rsync.password  [root@nfs01 ~]# rsync -avz /etc/hostname rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password  
    sending incremental file list  
    hostname  
    sent 101 bytes received 49 bytes 300.00 bytes/sec  
    total size is 6 speedup is 0.04  
    [root@nfs01 ~]#
    

    五、在客户端编写脚本

    脚本存放目录:/server/scripts/
    脚本名称:client_rsync_backup.sh

    5.1 先根据需求在客户端命令行写对应的命令并测试

    5.1.1 创建对应ip地址的目录

    [root@web01 ~]# Ip=$(hostname -I |awk '{print $NF}')  [root@web01 ~]# mkdir -p /backup/$Ip  
    [root@web01 ~]# tree /backup/  /backup/  
    └── 172.16.1.7  1 
    directory, 0 files 
     [root@web01 ~]#
    

    5.1.2 打包备份:打包备份/etc /var/www/html到/backup/172.16.1.7下,压缩包叫conf-2019-5-21-1.tar.gz,以时间命名

    [root@web01 ~]# tar zcf /backup/172.16.1.7/conf-$(date +%F-%w).tar.gz /etc /var/www/html  
    tar: Removing leading `/' from member names  
    [root@web01 ~]# tree /backup/  /backup/  
    └── 172.16.1.7   
      └── conf-2019-05-22-3.tar.gz  
    1 directory, 1 file  
    [root@web01 ~]#
    

    5.1.3 制作md5---用于后面校验(备份服务器上检查备份结果是否正常(备份内容变?))

    [root@web01 ~]# md5sum $(find /backup/ -type f -name '*.tar.gz') >/backup/$Ip/$(hostname).md5  
    [root@web01 ~]# tree /backup/  /backup/  
    └── 172.16.1.7   
      ├── conf-2019-05-22-3.tar.gz   
      └── web01.md5 
     1 directory, 2 files  
    [root@web01 ~]#
    

    5.1.4 推送备份---将客户端的备份推送到backup服务器上的backup模块

    [root@web01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password  
    sending incremental file list  
    ./  
    172.16.1.7/  
    172.16.1.7/conf-2019-05-22-3.tar.gz  
    172.16.1.7/web01.md5  
    sent 10,015,630 bytes received 73 bytes 6,677,135.33 bytes/sec
    total size is 10,214,471 speedup is 1.02  
    [root@web01 ~]#
    
    [root@backup ~]# tree /backup  
    /backup  
    └── 172.16.1.7
       ├── conf-2019-05-22-3.tar.gz
       └── web01.md5  1 directory, 2 files 
     [root@backup ~]#
    

    注:编写到脚本中的时候,可以将-avz中v取消,即-az

    5.1.5 删除备份---删除7天之前的备份

    rm -rf $(find /backup/ -type f -mtime +7 -name '*.tar.gz')
    

    5.2 将以上脚本编写到定时任务脚本中

    [root@web01 ~]# cat /server/scripts/client_rsync_backup.sh
    #!/bin/bash  
    . /etc/profile  
    Host=$(hostname)          
    #ip var         
    Ip=$(ip a s eth1|awk -F'[ /]+' 'NR==3{print $3}')    
    #date var  
    Date=$(date +%F-%w)           
    #make backup dir  
    mkdir -p /backup/${Ip}  
    #tar /etc/ /var/www/html to /backup  
    tar zcf /backup/${Ip}/conf-${Date}.tar.gz /etc/ /var/www/html
    #make md5  
    md5sum $(find /backup/ -type f -name '*.tar.gz') >/backup/${Ip}/${Host}.md5  
    #push tar file to server 
     rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password  
    #delete 7 day ago  
    #rm -rf $(find /backup/ -type f -mtime +7 -name '*.tar.gz'
    [root@web01 ~]#
    

    5.3 编写定时任务

    注:根据需求编写定时任务之前,先按照每分钟进行测试,没问题之后修改为需求中的具体执行时间

    [root@web01 /server/scripts]# crontab -l
    #backup meige server rsync
    00 00 * * * sh /server/scripts/client_rsync_backup.sh >/dev/null 2>&1
    

    5.4 遇到的错误

    5.4.1 Connection refused 连接拒绝

    [root@web01 ~]# rsync -avz /backup/$Ip rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password
    rsync: failed to connect to 172.16.1.41 (172.16.1.41): Connection refused (111)
    rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
    

    原因:backup服务端的rsync服务没有启动,systemctl restart rsyncd启动即可

    六、 在服务端编写脚本

    存放脚本文件的位置:/server/scripts/
    脚本名称:server_backup_check.sh

    6.1 进行md5检查,检查数据是否修改

    方法1:md5sum -c /backup/*/*.md5 >/backup/md5.txt
    方法2:find /backup/ -type f -name '*.md5'|xargs md5sum -c >/backup/md5.txt
    

    6.2 备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

    find /backup/ -type f -name '*.tar.gz' ! -name '*-6.tar.gz' -mtime +180 |xargs rm -rf
    

    6.3 将每天的备份结果发给管理员信箱。

    6.3.1 配置mail使用外部SMTP发邮件

    1> 注册一个163邮箱
    2> 检查邮件服务是否启动及开机自启动

    [17:47 root@backup ~]# systemctl restart postfix.service
    [17:50 root@backup ~]# systemctl is-active postfix.service
    active
    [17:50 root@backup ~]# systemctl is-enabled postfix.service
    enabled
    

    3> 修改/etc/mail.rc最后一行加入

    set from=xinxiangyu_wwj@163.com smtp=smtp.163.com 
    set smtp-auth-user=xinxiangyu_wwj@163.com smtp-auth-password=wwjfly520 smtp-auth=login
    
    说明:
    from:是发送的邮件地址
    smtp:是发生的外部smtp服务器的地址
    smtp-auth-user:是外部smtp服务器认证的用户名
    smtp-auth-password:是外部smtp服务器认证的用户密码(授权码)
    smtp-auth:是邮件认证的方式
    提示:这部分要和邮件服务商提供的地址一样才行!
    

    6.3.2 测试邮箱配置是否正确

    [root@backup ~]# mail -s 'ceshi youxiang' xinxiangyu_wwj@163.com </backup/md5.txt
    

    6.4 编写服务端定时任务脚本

    [root@backup ~]# cat /server/scripts/server_backup_check.sh
    #!/bin/bash  
    . /etc/profile  
    #check  
    md5sum -c /backup/*/*.md5 >/backup/md5.txt  
    #find /backup/ -type f -name '*.md5'|xargs md5sum -c >/backup/md5.txt  
    #del 180 ago  
    #find /backup/ -type f -name '*.tar.gz' ! -name '*-6.tar.gz' -mtime +180 |xargs rm -rf  
    #send mail  
    mail -s 'Rsync Backup Warn' xinxiangyu_wwj@163.com </backup/md5.txt  
    [root@backup ~]#
    

    6.5 编写服务器端定时任务

    注:根据需求编写定时任务之前,先按照每分钟进行测试,检查没问题之后修改为需求中的具体执行时间

    [root@ backup /server/scripts]# crontab -l
    #backup meige server rsync
    00 00 * * * sh /server/scripts/ server_backup_check.sh >/dev/null 2>&1
    

    相关文章

      网友评论

        本文标题:Linux运维-day36-综合架构-rsync全网备份

        本文链接:https://www.haomeiwen.com/subject/pwjszqtx.html