美文网首页rsync服务jok20190717
第36课 rsync全网备份项目实战 2019-05-21

第36课 rsync全网备份项目实战 2019-05-21

作者: 苏水的北 | 来源:发表于2019-05-21 22:34 被阅读6次

    一、 企业案例:rsync上机实战考试题:

    web01 10.0.0.7
    backup 10.0.0.41
    某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:
    每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
    rsync守护进程模式
    定时任务 (脚本)
    具体要求如下:
    客户端:
    1)Web服务器A和备份服务器B的备份目录必须都为/backup。
    2)Web服务器站点目录假定为(/var/www/html)。
    3)Web服务器本地仅保留7天内的备份。
    服务器端:
    4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
    5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。

    二、前期基础环境准备思路:

    2.1 第一步先要把服务器端的rsync服务和虚拟用户rsync、块目录backup、密码文件/etc/rsync.password等的环境创建好:

    2.1.1 客户端想要进行守护进程推文件到服务器,首先需要确保服务器端的rsync服务已经开启;

    2.1.1 .1 先配置vim /etc/rsyncd.conf文件

    ##Rsync server
    ##created by oldboy 15:01 2009-6-5
    ##rsyncd.conf start##
    fake super = yes
    uid = rsync  (uid指定rsync运行的用户,虚拟用户)
    gid = rsync  (gid指定rsync运行的用户,虚拟用户)
    
    use chroot = no
    max connections = 2000(最大连接数)
    timeout = 600 (超时时间)
    pid file = /var/run/rsyncd.pid(pid进程号)
    lock file = /var/run/rsync.lock(锁文件,两个窗口同时运行yum)
    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(deny拒绝)
    auth users = rsync_backup(指定认证用户,虚拟不存在)
    secrets file = /etc/rsync.password(密码文件)
    #####################################
    [backup](data模块一般与目录的名字相同)
    comment = www by old0boy 14:18 2012-1-13
    path = /backup (指定共享目录)
    

    2.1.1.2 配置完 /etc/rsyncd.conf文件后,重启服务

    systemctl restart  rsyncd (重启服务)
    
    systemctl  enable rsycd     (开机自启动服务)
    

    2.1.1.3 查看是否启动和开机自启动

    [root@backup ~]# systemctl status  rsyncd
    ● rsyncd.service - fast remote file copy program daemon
       Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2019-05-21 14:56:27 CST; 4h 36min ago
     Main PID: 8891 (rsync)
       CGroup: /system.slice/rsyncd.service
               └─8891 /usr/bin/rsync --daemon --no-detach
    
    May 21 14:56:27 backup systemd[1]: Stopped fast remote file copy program daemon.
    May 21 14:56:27 backup systemd[1]: Started fast remote file copy program daemon.
    
    [root@backup ~]# systemctl is-enabled  rsyncd
    enabled
    

    2.1.1.4 查看进程与端口是都开启

    root@backup ~]# ps -ef |grep rsync 
    root       9749      1  0 16:12 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
    root       9751   9490  0 16:13 pts/1    00:00:00 grep --color=auto rsync
    
    [root@backup ~]# ss -lntup|grep rsync 
    tcp    LISTEN     0      5         *:873                   *:*                   users:(("rsync",pid=9749,fd=3))
    tcp    LISTEN     0      5        :::873                  :::*                   users:(("rsync",pid=9749,fd=5))
    

    2.1.2 需要创建虚拟用户rsync;

    [root@backup ~]#    useradd  -M -s /sbin/nologin  rsync
    

    2.1.3 需要给服务器端创建backup块目录,并更改rsync的用户主与用户组;

    [root@backup ~]#    mkdir  /backup
    [root@backup ~]# chown  rsync.rsync  /backup
    

    2.1.4 创建密码文件/etc/rsync.password,并写入密码,然后授权600的权限

    [root@backup ~]# echo "rsync_backup:123456'" >/etc/rsync.password
    
    [root@backup ~]# chmod  600  /etc/password
    
    2.2 给客户端需要配置密码文件/etc/rsync.password并修改600权限和创建/var/www/html
    [root@nfs01 ~]# echo "123456" >/etc/rsync.password
    
    [root@nfs01 ~]# chmod  600  /etc/password
    
    [root@nfs01 ~]# mkdir -p  /var/www/html
    

    完成2.1和2.2的操作以后,就对服务器端和客户端最基本的环境创建完成,现在开始做项目!!!

    三、项目实战思路:

    3.1 在客户端下进行:先给客户端在/backup下创建以ip命名的目录、用时间打包压缩/var/www/html目录、记录指纹md5sum、推送到服务器的块目录backup、然后对客户端本地7天外的文件进行删除:

    3.1.1 先在客户端的/backup下用本机ip命名目录:

    [root@web01 ~]# IP=$(hostname -I |awk '{print $NF}')
    [root@web01 ~]# echo $IP
    172.16.1.7
    [root@web01 ~]# mkdir -p /backup/$IP
    

    3.1.2 用时间打包/var/www/html 文件:

    [root@web01 ~]# tar zcf /backup/$IP/$(date +%F_%w).tar.gz   /var/www/html
    

    3.1.3 记录指纹信息,重定向到/backup/$IP/web01.md5中:

    [root@web01 ~]# find /backup/  -type f -name '*.tar.gz' |xargs md5sum  >/backup/$IP/web01.md5
    

    3.1.4 把/backup目录下的内容全部同送到服务器的/backup中:

    [root@web01 ~]# rsync -avz /backup/  rsync_backup@10.0.0.41::backup  --password-file=/etc/rsync.password
    

    3.1.5 对/backup目录下的文件,只保留7天内的,其余的删除:

    [root@web01 ~]#  find  /backup/ -type f -name '*.tar.gz'  -mtime  +7 |xargs  rm -rf 
    

    3.1.6 以上5步运行没问题后,写入脚本文件/server/scripts/bak.sh(需要自行创建):

    [root@web01 ~]# vim    /server/scripts/bak.sh 
    #!/bin/bash
    .   /etc/profile
    
    IP=$(hostname -I |awk '{print $NF}')
    #mkdir dir
    mkdir -p /backup/$IP
    #tar
    tar zcf /backup/$IP/$(date +%F_%w).tar.gz   /etc/  /var/www/html
    #make md5
    find /backup/  -type f -name '*.tar.gz' |xargs md5sum  >/backup/$IP/web01.md5
    #rsync.server 
    rsync -avz /backup/  rsync_backup@10.0.0.41::backup  --password-file=/etc/rsync.password
    #del 7 day ago  files
    find  /backup/ -type f -name '*.tar.gz'  -mtime  +7 |xargs  rm
    

    3.1.7 运行脚本没问题后,写定时任务:

    [root@web01 ~]# crontab -e
    
    # * * * * *  /bin/sh /server/scripts/bak.sh   >/dev/null   2>&1
    ~                                                                   
    

    以上的所有操作就完成了客户端的配置,接下来需要去服务器端收数据、验证指纹信息等

    3.2 在服务器下进行:先需要检查服务器下的/backup是否收到客户端推送的数据、验证指纹信息、保留180内的数据和每周六的数据、将备份的结果发送到邮箱:

    3.2.1 先检查在/backup下是否收到客户端推送的数据:

    [root@backup ~]# ll  /backup
    total 8
    drwxr-xr-x 2 rsync rsync   50 May 21 17:40 172.16.1.7
    

    3.2.2 进行指纹验证(2种方法均可以实现验证):

    [root@backup ~]# md5sum -c  /backup/*/*.md5 >/backup/result.txt
    
    [root@backup ~]# find /backup/  -type  f -name "*.md5"|xargs md5sum -c
    

    3.2.3 删除180前的文件但是要保留每周6的文件:

    [root@backup ~]# find  /backup/ -type f  -name "*.tar.gz"  ! -name "*-6.tar.gz"  -mtime +180  |xargs rm
    

    3.2.4 发送邮件:

    [root@backup ~]# mail  -s "Backup check result"  lidao996@163.com    </backup/result.txt
    

    3.2.5 验证以上信息可执行后,写入脚本文件/server/scripts/check.sh(需要自行创建):

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

    3.2.6 运行脚本没问题后,写定时任务:

    [root@backup ~]# crontab -e
    # * * * * *  /bin/sh /server/scripts/check.sh   >/dev/null   2>&1
    ~                                                                   
    

    四、邮件服务启用时候需要进行如下操作:

    4.1 检查服务是否正在运行、是否开机自启:
    [root@backup ~]# systemctl restart postfix.service 
    [root@backup ~]# 
    [root@backup ~]# systemctl is-active postfix.service 
    active
    [root@backup ~]# systemctl is-enabled  postfix.service 
    enabled
    
    4.2 进行服务配置如下:
    vim /etc/mail.rc 
    set from=lidao996@163.com  smtp=smtp.163.com    smtp-auth-user=lidao996    smtp-auth-password=oldboyedu123   smtp-auth=login
    
    4.3 重启服务:
    systemctl restart postfix.service
    

    相关文章

      网友评论

        本文标题:第36课 rsync全网备份项目实战 2019-05-21

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