将多个Shell脚本保存为一个备份日志文件

时间:2015-03-17 12:35:11

标签: bash shell logging sh unix-timestamp

我有bellow脚本来备份第10个服务器日志。

#!/bin/sh

filePath="/var/opt/AppServer/App/instances/default/logs/error.log.10"
backupDir="/backup_app-N/app/default/logs"

### Process Starts ####

md5File=`md5sum $filePath| awk -F" " '{print $1}'`
#echo $md5File
fileName=`basename $filePath| sed 's/.[0-9]\+//g'`
#echo $fileName
while [ 1 ]
do
    md5Previous=$md5File
    md5File=` md5sum $filePath| awk -F" " '{print $1}'`
    #echo "Previous: $md5Previous  Current: $md5File"
    if [ $md5Previous != $md5File ]; then
                    exe_date=`date '+%m%d%y_%H%M%S'`
                    cp $filePath $backupDir/$fileName-$exe_date
                    echo "COPY :"$filePath" as " $backupDir/$fileName-$exe_date    
                    gzip $backupDir/$fileName-$exe_date
    fi
    sleep 3
done

我有相同功能的相同脚本,但只更改 filePath 。 现在我想让一个脚本运行完成相同的任务。 (在一个脚本中保持相同的逻辑,而不是并发)

我做了以下事情 - 我创建了一个配置文件 - test.config,我将所有 filePath 放入其中并从配置文件中读取路径。

#!/bin/sh

while [ 1 ]
do
while read path
do
filePath="$path"
backupDir="/backup_app-N/app/default/logs"

### Process Starts ####

md5File=`md5sum $filePath| awk -F" " '{print $1}'`
#echo $md5File "md"
fileName=`basename $filePath| sed 's/.[0-9]\+//g'`
#echo $fileName "file"

    md5Previous=$md5File
    md5File=` md5sum $filePath| awk -F" " '{print $1}'`
           #echo "Previous: $md5Previous  Current: $md5File"
    if [ $md5Previous != $md5File ]; then

                    exe_date=`date '+%m%d%y_%H%M%S'`
                    cp $filePath $backupDir/$fileName-$exe_date
                    echo "COPY :"$filePath" as " $backupDir/$fileName-$exe_date
                    gzip $backupDir/$fileName-$exe_date
    fi        

done < test.conf
sleep 3
done

test.config中,我把路径视为

/var/opt/AppServer/App/instances-0/default/logs/error.log.10
/var/opt/AppServer/App/instances-1/default/logs/error.log.10
/var/opt/AppServer/App/instances-2/default/logs/error.log.10
/var/opt/AppServer/App/instances-3/default/logs/error.log.10         

当我分别运行脚本时,我得到了结果。但我的修改后的工作不正常。

我认为问题出在while loop上。一旦它进入,它需要4路径并执行第二次,循环从头开始,它不能保持最后状态!

我有疑问 - 可能的解决方案是什么?

以这种方式一起运行几个脚本我的方法是否合适?

我可以通过其他方式实现这一目标吗?

0 个答案:

没有答案