【MySQL】备份中的一部分【Shell】脚本
MySQL备份脚本中一个,处理备份数据的脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/bash source ~/.bash_profile dir1=/coll/01-Today dir2=/coll/02-Last-7-days dir3=/coll/03-07-days-ago dir4=/coll/04-14-days-ago dir5=/coll/05-Year if [ -e /coll/scripts/log_function.sh ] then source /coll/scripts/log_function.sh else echo -e “\033[41;37m /coll/scripts/log_function.sh is not exist. \033[0m” exit 1 fi if [ "$(ls -A ${dir1})" ]; then echo "$dir1 is not Empty" mv ${dir1}/*.gz ${dir2}/ fi log_correct "Move ["${dir1}"/files] complete!" find ${dir2}/ -mtime +07 -type f -name '*.gz'|xargs -i mv {} ${dir3}/ log_correct "Move ["${dir2}"/files] complete!" find ${dir3}/ -mtime +14 -type f -name '*.gz'|xargs -i mv {} ${dir4}/ log_correct "Move ["${dir3}"/files] complete!" find ${dir4}/ -mtime +21 -type f -name '*.gz'|xargs -i mv {} ${dir5}/ log_correct "Move ["${dir4}"/files] complete!" find ${dir5}/ -mtime +30 -type f -name '*.gz' ! -name '*01_*' | xargs rm -rf log_correct "Delete expired data complete!["${dir5}"]" find ${dir5}/ -type d -empty | xargs rm -rf log_correct "Delete empty folder complete!["${dir5}"]" cd ${dir5} file=`find . -maxdepth 1 -type f` for v in $file do date_file=`stat $v |grep Modify` dir_data=${date_file:7:8} #echo "$file+$dir_data" [ -d $dir_data ] || mkdir $dir_data [ -d $dir_data ] && mv $v $dir_data done log_correct "Move files to folder complete!["${dir5}"]" echo "[Done]"$(date -d "1 minute " +"%Y-%m-%d %H:%M:%S") |
说明:
[ -d $dir_data ] || mkdir $dir_data
-d $dir_data 如果 $dir_data为目录,则为真。
||:如果左侧为假,那么执行右侧命令。
另:此处mkdir -p $dir_data 也可以。
[]和test,两者是一样的,在命令行里test expr和[ expr ]的效果相同,另外,[]中命令左右两侧不要吝啬空格。
[ -d $dir_data ] && mv $v $dir_data
&&:左侧为真,那么执行右侧命令。