首页 > 其他 > 详细

自动备份指定文件列表中的文件到指定文件夹

时间:2014-09-12 22:13:34      阅读:413      评论:0      收藏:0      [点我收藏+]

    因为业务需要,在每次页面变更的时候,都需要将原来的文件备份,下边是自己写的一个自动备份的脚本

    

    

#!/bin/bash
#读取指定文件中文件列表,文件列表中每行一个
#脚本自动读取每行数据,判断文件是否存在,如果存在,则复制到按照时间命名的备份文件中。如果否则记录路径名称
FILE_LISTS=list.txt #定义列表文件名称,脚本必须和文件列表文件在同一目录下
CUR_PATH=`pwd`  #定义当前路径,执行脚本必须到脚本目录,如果要通过计划任务执行,则需要进行一定修改,将此路径修改为指定路径
CUR_TIME=`date +%Y%m%d_%H_%m` #去当前系统时间为备份文件名称
BAK_DIRNAME=bak_"$CUR_TIME"   #备份文件夹名称
TAR_PATH="$CUR_PATH/""$BAK_DIRNAME"
LOG_NAME="$TAR_PATH"/log.txt
if [ -d $TAR_PATH ]  #判断文件是否存在,很少会出现在1分钟内执行两次的情况
then
		     echo "文件夹存在"
else
		     mkdir -p "$TAR_PATH" #级联创建相关路径
fi

cd "$TAR_PATH"

if [ `pwd` != "$TAR_PATH" ]
then 
    echo "路径进入失败"
	exit 99     
else
    #rm -fr *  #删除操作需要慎重使用,此脚本在一般情况下不会出现一分钟备份两次的情况,如果有这种特殊情况,可以手动清除
	echo "ok"
fi
COUNT_TOTAL=0
COUNT_BAKSUCESS=0
COUNT_NOTEXSIT=0
#准备工作完成,开始执行备份文件
cd "$CUR_PATH"
echo "$CUR_TIME">"$LOG_NAME"
for line in `cat $FILE_LISTS`
do
   #判断路径中的文件是否存在
   if [ -e "$line" ]
   then
      cp "$line" "$TAR_PATH"&&echo "$line ok">>"$LOG_NAME"&&let "COUNT_BAKSUCESS+=1"
   else
      echo "$line not exit">>"$LOG_NAME"&&let "COUNT_NOTEXSIT+=1"
   fi
   let "COUNT_TOTAL+=1"
done

echo "total is :$COUNT_TOTAL">>"$LOG_NAME"
echo "sucess is :$COUNT_BAKSUCESS">>"$LOG_NAME"
echo "not exist is :$COUNT_NOTEXSIT">>"$LOG_NAME"


自动备份指定文件列表中的文件到指定文件夹

原文:http://my.oschina.net/7shell/blog/313075

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!