因为项目需求,系统故障时能把备份文件重新放到指定目录下做重新计算,现在需要把备份目录下的所有txt文件全部复制到一个目录下
现在备份文件的目录结构是
/mnt/data/backup/
------------------------2022
-----------------------------06
---------------------------------20
------------------------------------xxx一些规定的目录名称
----------------------------------------所有的 .txt 文件
#!/bin/bash
#拷贝的开始时间
START_YEAR=2022
START_MONTH=06
START_DAY=28
#START_HOUR=00
#拷贝的结束时间
STOP_YEAR=2022
STOP_MONTH=06
STOP_DAY=30
#拷贝源数据的根目录
source_dir1="/mnt/data/backup/one"
source_dir2="/mnt/data/backup/two"
#拷贝的目的目录
dest_dir="/mnt/data/pdqtest/"
echo '=========================start copy_file...'
function recursive_copy_file()
{
dirlist=$(ls $1)
for name in ${dirlist[*]}
do
if [ -d $1/$name ]; then
# 如果是目录,递归到最底层
recursive_copy_file $1/$name $2
else
cp $1/*.txt $2
echo "$1/*.txt"
# 直接复制txt
break
fi
done
}
date=`date -d "$START_YEAR-$START_MONTH-$START_DAY" +%s`
end_date=`date -d "$STOP_YEAR-$STOP_MONTH-$STOP_DAY" +%s`
echo $date $end_date
while [ $date -le $end_date ]
do
date_str=`date -d @$date "+%Y%m%d"`
echo $date_str
YEAR=${date_str:0:4}
MONTH=${date_str:4:2}
DAY=${date_str:6:2}
source_dir11="${source_dir1}/$YEAR/$MONTH/$DAY"
source_dir22="${source_dir2}/$YEAR/$MONTH/$DAY"
recursive_copy_file $source_dir22 $dest_dir
let date=$date+24*60*60
done
#recursive_copy_file $source_dir2 $dest_dir
分割指定长度字符串的方法
${date_str:0:4}
date_str变量的从第0位开始,4位长度