记录一段Shell脚本,文件/文件夹清空复制内容修改和创建

前几年写过一段shell脚本,大致的功能是完成制定目录下的文件夹/文件自动清空和复制工作,同时针对不同目录下复制的文件进行一些内容修改。并在另外一个文件中进行记录。主要涉及 if-then-fi, for, sed 等基本操作,这里记录下这段shell脚本以备查阅使用。

  1. #!/bin/bash   
  2. #auther:Jacob Xu 20130811, create for Solr master indexing   
  3. echo “====================== choose the configure for user! ====================”  
  4. solrToolPath=/home/jacoxu/solrProject/solrTools/   
  5. creatIndexFolder=1   
  6. replaceSchame=0   
  7. replaceMasterConf=1   
  8. replaceSlaveConf=0   
  9. generateCoreMap=0   
  10. generateSolrXml=1   
  11.   
  12. ################## configure the index folder for user!###################   
  13. rawFolder=$solrToolPath“collection1970_01_1″  
  14. destFolder=/home/jacoxu/solrProject/solrHome_NormSMS/multicore/   
  15. startDate=201001   
  16. endDate=201412   
  17. coreChildren=( 1 2 3 )   
  18. conf=conf   
  19. prefixPath=collection   
  20. ########## configure the path of replaced schame.xml for user!###########   
  21. schema=schema.xml   
  22. rawSchema=$solrToolPath$schema  
  23. ######## configure the path of replaced solrconfig.xml for solr!#########   
  24. solrconfig=solrconfig.xml   
  25. rawSolrconfigMaster=$solrToolPath“solrconfigMaster.xml”  
  26. rawSolrconfigSlave=$solrToolPath“solrconfigSlave.xml”  
  27. oldServerIP=“127.0.0.1:8080/solr/core1970_01_1/”  
  28. newServerIPPrefix=“localhost:8080/solr/core”  
  29. #################### configure solr core map for solr!####################   
  30. solrCoreMap=solrCore_norm.map   
  31. ####################### configure solr.xml for solr!######################   
  32. solrXmlPattern1=“<core name=\”core”  
  33. solrXmlPattern2=“\” instanceDir=\”multicore/collection”  
  34. solrXmlPattern3=“\” loadOnStartup=\”false\” transient=\”true\” />”  
  35. solrXml=solr_norm.xml   
  36. echo $solrXmlPattern  
  37. #########################################################################   
  38.   
  39. if [ $creatIndexFolder -gt 0 ]   
  40. then  
  41.     echo “============== first clean dest datafolder! ============”  
  42.     if [ -d "$destFolder" ]   
  43.     then  
  44.         echo “are you sure to clear the folder?:”${destFolder}   
  45.         echo -n “[Y]es or [N]o? ”  
  46.         read ANS   
  47.         case $ANS in    
  48.         y|Y|yes|Yes)   
  49.             echo “remove ”${destFolder}   
  50.         rm -rf ${destFolder}   
  51.         mkdir “$destFolder”  
  52.         ;;   
  53.       n|N|no|No)   
  54.         echo “####### hasn’t changed anything, exit 0  #######”  
  55.         exit 0   
  56.         ;;   
  57.         *)   
  58.         echo  “#### Warning:please put in again: [Y]es or [N]o? ####”  
  59.             read ANS   
  60.                 case $ANS in    
  61.                 y|Y|yes|Yes)   
  62.                     echo “remove ”${destFolder}   
  63.                 rm -rf ${destFolder}   
  64.                 mkdir “$destFolder”  
  65.                 ;;   
  66.             n|N|no|No)   
  67.                 echo “####### hasn’t changed anything, exit 0  #######”  
  68.                 exit 0   
  69.                 ;;   
  70.             *)   
  71.             echo  “#### error: not match [Y]es or [N]o! ####”  
  72.             exit 0   
  73.             ;;   
  74.             esac   
  75.         ;;   
  76.         esac   
  77.     else  
  78.         mkdir “$destFolder”  
  79.     fi   
  80.   
  81.     echo “============ start to create new datafolder! ===========”  
  82.     for((j=0; j<${#coreChildren[*]}; j++))   
  83.     do  
  84.         cp -rf $rawFolder ${destFolder}${prefixPath}“0000_00_”${coreChildren[$j]}   
  85.         if [ $generateSolrXml -gt 0 ]   
  86.         then  
  87.         echo ${solrXmlPattern1}“0000_00_”${coreChildren[$j]}${solrXmlPattern2}“0000_00_”${coreChildren[$j]}${solrXmlPattern3} >> $solrXml  
  88.         fi   
  89.     done   
  90.     if [ $generateCoreMap -gt 0 ]   
  91.     then  
  92.     echo “coreChildrenNum=”${#coreChildren[*]} >> $solrCoreMap   
  93.     fi   
  94.     while [ $startDate -le $endDate ]   
  95.     do  
  96.         if [ ${startDate:4:6} -lt 10 ]   
  97.         then  
  98.             regNum=${startDate:5:6}   
  99.         else  
  100.             regNum=${startDate:4:6}   
  101.         fi   
  102.         i=$regNum  
  103.         for(( i; i<=12;i++))   
  104.         do  
  105.             if [ $i -lt 10 ]   
  106.             then  
  107.                 regNum=“0″“$i”  
  108.             else  
  109.                 regNum=$i  
  110.             fi   
  111.             tmpDestFolder=${destFolder}${prefixPath}${startDate:0:4}“_”${regNum}   
  112.             for((j=0; j<${#coreChildren[*]}; j++))   
  113.             do  
  114.                 instanceFolder=“$tmpDestFolder”“_”${coreChildren[$j]}   
  115.                 echo $instanceFolder  
  116.                 if [ $generateCoreMap -gt 0 ]   
  117.                 then  
  118.                     echo “core”${startDate:0:4}“_”${regNum}“_”${coreChildren[$j]}“=”${instanceFolder} >> $solrCoreMap  
  119.                 fi   
  120.                 cp -rf $rawFolder $instanceFolder  
  121.                 if [ $generateSolrXml -gt 0 ]   
  122.                 then  
  123.                 solrXmlP=${startDate:0:4}“_”${regNum}“_”${coreChildren[$j]}   
  124.                 echo ${solrXmlPattern1}${solrXmlP}${solrXmlPattern2}${solrXmlP}${solrXmlPattern3} >> $solrXml  
  125.                 fi   
  126.             done   
  127.             startDate=$[ $startDate + 1 ]   
  128.             if [ $startDate -gt $endDate ]   
  129.             then  
  130.             break  
  131.             fi         
  132.         done   
  133.         startDate=$[ $startDate + 88 ]   
  134.     done   
  135.     echo “============ has created the all datafolder! =============”  
  136. fi   
  137.   
  138. if [ $replaceSchame -gt 0 ]   
  139. then  
  140.     echo “============== start to replace the schema  ===============”  
  141.     if [ ! -f "$rawSchema" ]   
  142.     then  
  143.         echo “#### can’t find the raw file:schema.xml, exit 0  #####”  
  144.         exit 0   
  145.     fi   
  146.     cd $destFolder  
  147.     ls -d collection*/ | (while  
  148.     read line;   
  149.     do  
  150.         tmpSchemaPath=${destFolder}${line}${conf}“/”${schema}   
  151.         if [ -f "$tmpSchemaPath" ]   
  152.         then  
  153.             echo “remove the schema file: ”${tmpSchemaPath}   
  154.             rm “$tmpSchemaPath”    
  155.         fi   
  156.         echo “copy the schema file: ”${tmpSchemaPath}   
  157.         cp “$rawSchema” “$tmpSchemaPath”  
  158.     done)   
  159.     echo “=============== has replaced the schema ==================”  
  160. fi   
  161.   
  162. if [ $replaceMasterConf -gt 0 ]   
  163. then  
  164.     echo “=========== start to replace the solrconfig of master ============”  
  165.     if [ ! -f "$rawSolrconfigMaster" ]   
  166.     then  
  167.         echo “#### can’t find the raw file:solrconfig.xml, exit 0  #####”  
  168.         exit 0   
  169.     fi   
  170.     cd $destFolder  
  171.     ls -d collection*/ | (while  
  172.     read line;   
  173.     do  
  174.         tmpSolrconfigPath=${destFolder}${line}${conf}“/”${solrconfig}   
  175.         if [ -f "$tmpSolrconfigPath" ]   
  176.         then  
  177.             echo “remove the solrconfig file: ”${tmpSolrconfigPath}   
  178.             rm “$tmpSolrconfigPath”    
  179.         fi   
  180.         echo “copy the solrconfig file: ”${rawSolrconfigMaster}   
  181.         cp “$rawSolrconfigMaster” “$tmpSolrconfigPath”  
  182.     done)   
  183.     echo “=============== has replaced the solrconfig of master ==================”  
  184. fi   
  185.   
  186.   
  187. if [ $replaceSlaveConf -gt 0 ]   
  188. then  
  189.     echo “=========== start to replace the solrconfig of slave ============”  
  190.     if [ ! -f "$rawSolrconfigSlave" ]   
  191.     then  
  192.         echo “#### can’t find the raw file:solrconfig.xml, exit 0  #####”  
  193.         exit 0   
  194.     fi   
  195.     cd $destFolder  
  196.     ls -d collection*/ | (while  
  197.     read line;   
  198.     do  
  199.         tmpSolrconfigPath=${destFolder}${line}${conf}“/”${solrconfig}   
  200.         if [ -f "$tmpSolrconfigPath" ]   
  201.         then  
  202.             echo “remove the solrconfig file: ”${tmpSolrconfigPath}   
  203.             rm “$tmpSolrconfigPath”    
  204.         fi   
  205.         echo “copy the solrconfig file: ”${rawSolrconfigSlave}   
  206.         cp “$rawSolrconfigSlave” “$tmpSolrconfigPath”  
  207.         newServerIP=${newServerIPPrefix}${line:10:19}   
  208.         echo $newServerIP  
  209.         echo “has changed the file:”${tmpSolrconfigPath}“:”${oldServerIP}“ to ”${newServerIP}   
  210. #       cd ${destFolder}${line}${conf}   
  211.         sed -i “s#${oldServerIP}#${newServerIP}#g” $tmpSolrconfigPath  
  212.     done)   
  213.     echo “=============== has replaced the solrconfig of slave ==================”  
  214. fi   

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>