shell备份移动某个目录下的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell备份移动某个目录下的文件相关的知识,希望对你有一定的参考价值。

工作中服务器上某个目录下有每天产生的日志和文件,但该目录存储容量有限,需要备份或移动到一个比较大的备份目录下。目录是以每天的8位格式日期命名。如果今天是2020年4月10日,目录就是20200410设置一个可以调节备份的范围,需要的时候可以修改date1和date2中的数字,确定备份范围。

下面的程序是将日期20前的目录备份走,每隔一周用crontab调用一次本脚本。crontab脚本略。

#!/bin/bash
#date1是要移动的起始日期,date2是要移动的结束日期
date1=$(date -d ‘-27 day‘ +%Y%m%d)
date2=$(date -d ‘-20 day‘ +%Y%m%d)
#now time
echo $date1
echo $date2
current_format=`date --date=‘0 days ago‘ +%Y%m%d` #当前8位日期
current=`date --date="$current_format" +%s`

date1Second=`date -d "-0 day $date1" +%s`
date2Second=`date -d "-0 day $date2" +%s`
diff=$((($date2Second-$date1Second)/3600/24))
diff2=$((($current-$date2Second)/3600/24))
for ((i=0;i<=$diff;i++))
do
    days=$(( $diff + $diff2 -i ))
    currentday=`date --date="$days days ago" +%Y%m%d`

    mv $currentday /data/filebak 
    echo "mv $currentday complete"
done

时间设置,因为date2-date1不能直接算出差的天数,所以先都换成秒,然后相减后再换成天。中间之所以要用当前日期current,是作为一个参照系,是相对于哪天的20天以前。

以上是关于shell备份移动某个目录下的文件的主要内容,如果未能解决你的问题,请参考以下文章

利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

只备份某个目录下新产生的文件

Linux+Shell获取及拷贝最新备份数据

shell编程,跨服务器备份文件

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

shell脚本,怎样将某个目录下的所有文件的后缀改为.bak