• 第一章作业


    某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:

    每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。

    具体要求如下:

    1)NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup;

    2)NFS服务器站点目录假定为(/var/www/html);
    3)NFS服务器脚本目录假定为(/server/scripts);
    4)NFS服务器站点日志目录假定为(/app/logs);
    5)NFS服务器个人配置文件目录路径(/etc/rc.d/rc.local);
    6)NFS服务器定时任务文件路径为(/var/spool/cron/root);
    7)将以上文件或目录打包(2-6条所示)推送到备份服务器backup ;
    8)NFS服务器本地仅保留7天内的备份;
    9)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱;
    10)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

    作业答案:

    环境搭建:

    第一步:创建rsyncd.conf配置文件(在备份服务器上部署)
    [root@backup backup]# cat /etc/rsyncd.conf
    #rsync_config
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    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 = 172.16.1.0/24
    #hosts deny =10.0.0.0/24
    auth users = rsync
    secrets file = /etc/rsync.password
    [backup]
    comment = "backup dir by oldboy"
    path = /backup
    [nfs]
    comment = "nfs dir by rsync"
    path = /nfs
    
    第二步:创建备份目录管理用户
    useradd -M -s /sbin/nologin rsync
    
    第三步:创建备份目录并将所属组与所属改成rsync用户
    mkdir /backup
    chown -R rsync. /backup
    
    第四步:创建认证文件,并将权限改成600
    echo "rsync:123" >> /etc/rsync.password
    chmod 600 /etc/rsync.password
    
    第五步:启动rsync服务
    rsync --deamon
    
    部署客户端,创建认证文件
    echo "oldboy123" >> /etc/rsync.password
    chmod 600 /etc/rsync.password
    

    作业解答:1-7题

    存储服务器中使用脚本

    [root@nfs01 backup]# cat /server/scripts/nfs.sh 
    #!/bin/bash
    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    ip=`ifconfig eth0|awk -F '[: ]+' 'NR==2 {print $4}'`
    #因为要备份昨天的数据,在日期这里就需要减1
    date=`date -d "-1 day" +%F_%w`
    name=$ip"_"$date
    #如果文件不存在则创建
    if [ ! -d /backup/  ];then
       mkdir /backup
    fi
    #备份到本机的/backup/文件中
    cd / && tar zcf /backup/$name.tar.gz var/www/html server/scripts etc/rc.d/rc.local var/spool/cron/root app/logs
    #将/backup/中的数据同步到rsync服务器中
    rsync -az /backup/  rsync@172.16.1.41::backup --password-file=/etc/rsync.password
    #删除七天前的数据
    find /backup -type f -mtime +7 |xargs rm -f
    

    将脚本添加到定时任务中

    [root@nfs01 backup]# crontab -l
    #backup to rsync backup 
    00 00 * * *  /bin/sh /servser/scripts/nfs.sh >/dev/null 2>&1
    [root@nfs01 backup]# 
    

    rsync服务器中使用脚本(9-10题)

    [root@backup backup]# cat /server/scripts/rsync.sh 
    #!/bin/bash
    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    #因备份的日期是昨天的,需要把日期减1天
    date=`date -d "-1 day" +%F_%w`
    name_file="10.0.0.31_"$date
    #判断nfs推送过来的备份文件是否存在,如果存在则备份成功,进行发送邮件
    if [ -f /backup/${name_file}.tar.gz ]; then
      echo "备份成功" > /backup/log.txt
      mail -s "${name_file}.tar.gz备份状态" 398565187@qq.com < /backup/log.txt
    else
      echo "备份失败,文件不存在,请检查!" > /backup/log.txt
      mail -s "${name_file}.tar.gz备份状态" 398565187@qq.com < /backup/log.txt
    fi
    #删除180天以前的备份,并保留周六的数据
    find /backup/ -type f -name "*[0-4,6].tar.gz" -mtime +180 |xargs rm -f
    

    将脚本添加到定时任务中

    [root@backup backup]# crontab -l
    #Monitor backup status and send mail to administrator
    05 00 * * * /bin/sh /server/scripts/rsync.sh >/dev/null 2>&1
     ps:因为nfs存储服务器的定时任务是晚上12点整才开始执行任务,在rsync服务器定时任务中,需要把时间推迟,看数据大小,我这边把定时任务推迟五分钟
    
  • 相关阅读:
    由js apply与call方法想到的js数据类型(原始类型和引用类型)
    ajax跨域
    悟透JavaScript(理解JS面向对象的好文章)
    Item 18: Understand the Difference between Function, Method, and Constructor Calls
    torch:hardsigmoid
    torch:CrossEntropy是个构造器,所以loss = torch.nn.CrossEntropyLoss()(output, target)这么写就对了
    检查运行文件名称与模块名称是否重复。如果重复,需要将文件名称重新命名。
    a = np.r_[1:4,0,4] 这语法有点神奇
    lstm官方demo,有好几种输出的shape
    np.c_ 这个玩意儿不是个方法,而是返回一个类然后直接和后面的ndarry相乘。。。相当于concatenate(【】,dim)
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/10508722.html
Copyright © 2020-2023  润新知