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天以前。
相关推荐
zhangjie 2020-11-11
步知道 2020-10-27
tufeiax 2020-09-03
85251846 2020-09-14
九天银河技术 2020-11-11
Crazyshark 2020-11-13
李轮清 2020-09-15
wangpaiyonghu 2020-06-28
jackalwb 2020-06-14
yhljxy 2020-06-14
myveer 2020-06-14
xiaobaif 2020-06-14
klarclm 2020-06-13
songshijiazuaa 2020-06-13
TMD咯MySQL 2020-06-12
archive 2020-06-12
清风徐来水波不兴 2020-06-09