自动备份项目

今天编写了一个小项目,不是很难,但是我调试花了非常多的时间,(原谅我这个小菜鸟不是很会找bug -_-||),如果有小伙伴发现错误,欢迎指出

自动备份项目

 项目要求

  1. 具备配置文件
  2. 每天定时更新,并详细记录日志
  3. 保留3天的备份数据

配置文件要求

1.包含需要备份的路径形式:path1:path2:path3

2.目标目录:打包到的安全目录

详细代码

1.建立配置文件.XX.rc (例如:.gaoy_back.rc)

back_path=/home/gaoyu/luogu:/home/gaoyu/practice    #要备份的路径(可多个)
dest_dir=/data    #备份文件或目录的目标目录
log=/var/log/back.log  #日志文件

2.建立日志文件

这里写图片描述

3.建立备份文件或目录的目标目录

这里写图片描述

4.编写脚本文件

#!/bin/bash 
. /home/gaoyu/shell/Automatic_backup_project/.gaoy_back.rc   #运行配置文件.gaoyu_back.rc  要写绝对路径,要后面不会出错

time_now=`date +"%Y-%m-%d %H:%M"`     #当前日期
time_file=`date +"%Y_%m_%d_%H_%M"`    #以分钟作为更改

if [[ ! -d $dest_dir  ]];then  #如果没有备份文件的目标文件,输出错误(要先在根目录建立一个dest_dir目录(名字根据.gaoyu_back.rc), 否则会一直输出错误)
    echo -e "$ time_now \033[31;32m[Error]\033[0m The Dest dir $dest_dir not exists" >> $log
    exit
fi
echo "$time_now backup started!" >> $log   #输出提示信息开始备份,重定向到日志文件

for i in `echo $back_path | tr ":" "\n"`;do  #将.gaoyu_back.rc内输入的多个路径分离开(tr命令),并遍历每个路径
    if [[ ! -d $i  ]];then  #路径为空,输出错误信息,并跳出本次循环,并遍历下一个路径
        echo -e "%time_now backup [Error] The dir $i not exist" >> $log
        continue
    fi
    echo "$i started"
    file_name=`echo $i | cut -d '/' -f "2-" | tr '/' '-'`   #将路径当做目录名(将路径的'/'变成'-')
    file_name=${file_name}_${time_file}.tar.gz        #压缩后的目录名
    tar -czPf ${dest_dir}/${file_name} $i         #压缩目录
    if [[ $? -eq 0  ]];then
        size=`du -h ${dest_dir}/${file_name} | cut -f 1`
        echo -e "$time_now backup $i --> $file_name +${size}M" >> $log
    else
        echo "$time_now [Eorror] " >> $log
    fi
done
Del_list=`find $dest_dir -name "*.tar.gz" -mmin +3`  #三分钟遍历一次备份文件

for i in $Del_list;do
    size=`du -h $i | cut -f 1`
    rm -f $i
    echo -e "$time_now delete $i --> remove -${size}" >> $log #删除备份文件,并记录到日志里

    done

5.运行结果

**运行脚本要用sudo ./back.sh,因为权限不够

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值