您当前位置: 首页 » shell » linux-shell » 【debian7】自动备份目录shell脚本

【debian7】自动备份目录shell脚本

2014-08-24 |

这个脚本的原型来自之前提到的db备份脚本,但做了一些改动略有不同。

这次的脚本支持逗号分隔的kv输入,具体输入文本格式如下

+------------------+--------------+----------------+
| folder full path | separator(,) | folder descript|
+------------------+--------------+----------------+
| /var/aaaaa/      |    ,         | aaaa11111      |
+------------------+--------------+----------------+

发送到邮箱的标题命名:web_bak_${folder descript}_${data}

具体shell代码如下:

#!/bin/bash
 
#need 2 var
if (($# != 2)); then
        echo "need input [Web Site Name Full Path in File] [mode]"
        echo "mode -> 0, <Web Site Name Full Path in File> read!"
        echo "mode -> 1, do Web Site bak!"
        exit;
fi
 
if (($2 < 0 && $2 > 1)); then
        echo "err mode!"
        exit
fi
 
#filter some lines:
# 1. pure tab line
# 2. pure \r\n
# 3. pure space line
WebSiteFullPathInFilePath=$1
sed /^[[:space:]]*$/d $WebSiteFullPathInFilePath > $WebSiteFullPathInFilePath".tmp"
 
#################################################### 
#pre-info
#
# +----------+--------------+-------------+
# | fullpath | separator(,) | description |
# +----------+--------------+-------------+
#
####################################################
loop_count=0
bak_WebSiteFullPathInFilePath_target=1
bak_WebSiteDescriptionFilePath_target=1
echo "WebSiteFullPathInFilePath: "$WebSiteFullPathInFilePath" <<<>>>  WebSiteFullPathInFilePath_tmp: "$WebSiteFullPathInFilePath".tmp"
echo ============ output all web site info $(date +"%Y%m%d")  ==================
while read -r line
do
	#echo $line
	stringlen=${#line}
	keyend=$(expr index $line ',')
	key=${line:0:$keyend-1}
	value=${line:$keyend:$stringlen-$keyend}

	#echo "stringlen: "$stringlen" keyend: "$keyend" key: "$key" value: "$value

	bak_WebSiteFullPathInFilePath_target[loop_count]=$key
	bak_WebSiteDescriptionFilePath_target[loop_count]=$value
        ((loop_count++))
done < $WebSiteFullPathInFilePath".tmp"

i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
 echo "website name: "${bak_WebSiteDescriptionFilePath_target[$i]}
 echo -e "\twebsite full path: "${bak_WebSiteFullPathInFilePath_target[$i]}"\n"
done
echo "total - "$i
echo ============ end ==================

if (($2 == 0)); then
        echo "test over"
        exit;
fi

if (($i<=0)); then
 echo "don't have website full path!"
 exit
fi

#do work
i=0
for ((;i<$loop_count && $loop_count>0;i++))
do
        WebSiteFullPath=${bak_WebSiteFullPathInFilePath_target[$i]}
	WebSiteDescription=${bak_WebSiteDescriptionFilePath_target[$i]}
        BakName_tmp=website_bak_${WebSiteDescription}_$(date +"%Y%m%d")

	#mkdir
	mkdir /tmp/website_bak
	mkdir /tmp/website_bak/${WebSiteDescription}

        #del bak file before 3 days
        rm -rf /tmp/website_bak/${WebSiteDescription}/website_bak_${WebSiteDescription}_$(date -d -3day +"%Y%m%d").tar.gz

        #compact file
        tar zcf /tmp/website_bak/${WebSiteDescription}/$BakName_tmp.tar.gz $WebSiteFullPath

        #Send mail
        mutt -s $BakName_tmp "email@163.com" -a /tmp/website_bak/${WebSiteDescription}/$BakName_tmp.tar.gz < /var/auto_script/emptytext.txt
done

同样作为定时任务,将命令执行放在crontab中

分类:

linux-shell

| 标签:

,