中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Shell
a auto backup bashscritp(building)
作者:未知 时间:2005-09-13 23:23 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:a auto backup bashscritp(building)
    Nowadays,I debuged a program written by a professon.In addition to the contents of the programme,I'was also confused with the edition number of the piles,after all,there were so many backups.I can't directory find which one is the latest or newer.
    Now,I've written a script used to make a back,it's now just equiped with some simple questions,some sumplement functions will be added(but not now-:) because of having no time).
    Most frequently used script styles are included in this script except for the regular expression(it's the most interesting and powerful one).
    It'll be developed to be a powerful one sooner or later.

#!/bin/bash
#============================================================================
#This is a script used to automatically backup a certain directory
#============================================================================
#author:yuanweiwei(yuanweiwei@gmail.com)
#date:2005.4.10
#version:1.0
#============================================================================
#This function func_f is used to back a certain file,its first parameter must
#be a file name which is a absolute path name,and the second is the dest
#directory where the file will be backed
func_f()
{

#if wrong parameters ,exit
if [ $# != 3 ]
then
echo "only $# parameters,bad parameters ,exit! in func_f"

exit 1
fi

filename=
dest_directory=
log=

#if the first parameter,which should be a filename is not exist or is a
#directory,exit
if [ ! -e $filename -o -d $filename ]
then
echo "$filename is not a file,exit!"
exit 1
fi

#if dest directory doesn't exit
    if [ ! -e $dest_directory ]
        then
        echo "dest directory $dest_directory doesn't exist,creat?"
        read com
#note that at this point root privilege maybe needed and should be checked,
#and command value should be checked
        if [ "$com" == "Y" -o "$com" == "y" -o "$com == "YES" -o "$com == "yes" ]
        then
        echo "begin to make dir $dest_directory"
        mkdir -p  $dest_directory
        elif [ "$com" == "N" -o "$com" == "n" -o "$com == "NO" -o "$com == "no" ]
        then
        exit 0
        else
        echo "unknown command,exit"
    fi
#if dest directory is not a directory ,exit
    elif [ ! -d $dest_directory ]
        then
        echo "$dest_directory is not a directory,exit"
        exit 0
    fi

#now everything is fixed,begin -:)
#get current time as suffix of the name of backup files
    backtime=$(date +%Y_%m_%d_%H_%M)
    echo $backtime
    suffixname=$backtime
    dest=$dest_directory/$_$suffixname
#if dest file exits,exit
    if [ -e $dest ]
    then
    echo "$dest exists,please wait one more minute"
    exit 0
    else
        cp $filename $dest
       if [ -e $log ]
       then
        echo "back $filename to $dest and exit status is $value" > $log
       else
        echo "back $filename to $dest and exit status is $value" >> $log
       fi    
   fi
}


#===========================================================================
#===========================================================================
#This function is used to backup a directory
#method:make a copy of a certain directory

func_d()
{
#if bad parameters ,exit
if [ $# != 1 -a $# != 2 -a $# != 3 ]
then
echo "bad parameters"
echo "usage:./execute sourcefile [dest_directory [log name]]"
exit 1
fi
default_dest=/usr/local/back/default
default_log=/usr/local/back/default/auto_back.log
source_directory=
#get the proper values for source directory dest directory and log file respetively
case $# in
1)
    dest_directory=$default_dest
    log_file=$default_log;;
2)
    dest_directory=
    log_file=$log;;
3)
    dest_directory=
    log_file=;;
esac

#if the source directory doestn't exist,exit
if [ ! -e $source_directory ]
then
echo "$source_directory doesn't exist,exit"
exit 1
elif [ ! -d $source_directory ]
then
echo "$source_directory is not a directory,exit"
exit 1
fi

#if the dest source directory doesn't exit,wait for another minute
if [ ! -e $dest_directory ]
then
echo "$dest_directory doesn't exist,create now?"
read comm
case $comm in
"y"|"Y"|"yes"|"YES")
mkdir -p $dest_directory;;
"n"|"N"|"NO"|"no")
exit 0;;
*)
echo "unknown command,exit"
exit 0;;
esac

#else,the dest_directory exist,but not a directory
elif [ ! -d $dest_directory ]
then
echo "$dest_directory is not a directory,pleace check it"
exit 0
fi

#now,the dest directory exists and is ok
backtime=$(date +%Y_%m_%d_%H_%M)
suffixname=$backtime
destination=$/$_$suffixname
#to see whether the destnation name exists
if [ -e $destination ]
then
echo "this directory has just been backed,please wait one more minute to back"
exit 0
fi

#now everything is ok,begin-:)
pathnow=$(pwd)
cp -a $source_directory $destination
#if [ ! -e $log_file]
#then
#echo "back directory $/$source_directory  to $destation" > $log_file
#else
exec 6>&1
exec >> $log_file
echo "back directory $/$source_directory  to $destination"
exec 1>&6 6>&-

#fi
#everything is fixed now
}

#=====================================================================
#start
#=====================================================================
default_directory="/usr/local/back/default"
logfile=$default_directory/auto_back.log
#see how many arguments
#======================================================================
if [ $# != 1 -a $# != 2 ]
then
echo "wrong parameters!"
echo "usage:./auto_back source_dirctory dest_directory"
exit 0
fi
#======================================================================
if [ ! -e ]
then
echo " doesn't,please check it"
exit 1;
fi

case $# in
1)
    if [ -f ]
    then
    func_f $default_directory $logfile
    else
    func_d $default_directory $logfile
    fi;;
2)                                                                                
      if [ -f ]
        then
        func_f $logfile
        else
        func_d $logfile
        fi;;
esac
#everything fixed ,exit
exit 0

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有