当前位置:  技术问答>linux和unix

求教一道shell编程题。

    来源: 互联网  发布时间:2015-03-22

    本文导语:  要求:    (1)将指定目录中的文件备份,要求两个参数:目录名($DIR)和备份文件名($BACKUP);     (2)检查目录名是否为/bin,/usr,/sbin等,如果是,则不进行备份;    (3) 江北份文件放于/usr/backup/$dir下   提...

要求:
   (1)将指定目录中的文件备份,要求两个参数:目录名($DIR)和备份文件名($BACKUP);
    (2)检查目录名是否为/bin,/usr,/sbin等,如果是,则不进行备份;
   (3) 江北份文件放于/usr/backup/$dir下


  提示 :备份文件用tar 命令和gzip命令 ,要求参数正确。

|
#!/bin/sh

if [ $# -ne 2 ]; then
    echo "Usage: `basename "$0"`  "
    exit 1
fi  

DIR="$1"
BACKUP="$2"
OLD_DIR=`pwd`
RESTRICTS="/bin /usr /sbin"

for RESTRICT in $RESTRICTS; do
    cd "$DIR"
    CUR_DIR=`pwd`
    if [ $RESTRICT = "$CUR_DIR" ]; then
        echo "$DIR is specal directory! You CAN'T backup it!"
        exit 1
    fi
    cd "$OLD_DIR"
done

if [ ! -d "/usr/backup" ]; then
    echo "Directory /usr/backup doesn't exist! Now create it!"
    mkdir /usr/backup
    if [ $? -ne 0 ]; then
        echo "Creating directory /usr/backup failed!"
        exit 1
    fi
fi

echo "Backup ..."
tar zcvf "/usr/backup/`basename $BACKUP`" "$DIR"
echo "... done"

注意:
1.  由于用户可能执行的命令行为:
./backup.sh "~/my doc" "my doc"
目录和文件名中可能含有空白字符,所以引用$DIR、$BACKUP等变量时应注意加上引号;
2. 由于用户可能执行的命令行为:
./backup.sh "../cgi" "cgi"
目录中可能含有.、..以及~等目录符号,所以必须用pwd的类似方法求得其绝对路径,才能与/bin、/usr、/sbin等比较;
3. 由于用户可能执行的命令行为:
./backup.sh "cgi" "/root/cgi"
文件命中含有路径,所以最好用basename命令将之去掉;
4. 由于/usr/backup目录可能不存在,所以在不存在时必须创建它;创建时可能失败,如在/usr中存在一个backup文件时;
5. tar的-z选项会自动调用gzip。













|
if [ $# != 2 ]
then
    echo  $0  
    exit -1
fi

DIR=$1
BACKUP=$2

if [ $DIR -eq "/bin" ] || [ $DIR -eq "/usr" ] || [ $DIR -eq "/sbin" ]
then
    echo $DIR is specal directory! Cannot backup it!
else
    tar cvf $DIR/$BACKUP /usr/backup/$DIR
fi


|
if [ $# != 2 ]
then
    echo  $0  
    exit -1
fi

DIR=$1
BACKUP=$2

RESTRICT="/bin /usr /sbin"

for NAME in $RESTRICT
do
  if [ $DIR = $NAME ]
  then
     echo $DIR is specal directory! Cannot backup it!
     exit -1
  fi
done

    echo "backuping..."
    tar cvf $DIR/$BACKUP   /usr/backup/$DIR
    gzip /usr/backup/$DIR/${BACKUP}.tar

|
小小改动

# 去除尾部的/
DIR=${1%/}

# 如果不是绝对路径,在前面加上PWD
if [[ $DIR != /* ]] ; then
    DIR="$PWD$DIR"
fi

# cvf - options
# tar [options] output.tar 
tar cvf /usr/backup/$DIR/$BACKUP.tar $DIR

    
 
 

您可能感兴趣的文章:

  • 求教一道模拟题?
  • 求教在《UNIX C高级编程》中的一道程序
  • shell编程中,求教,查找子字符串位置的问题
  • 求教,linux下c编程时怎么导入命令行?
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 菜鸟求教!--linux编程初学者
  • socket编程求教
  • 求教各位大大:关于vi或top命令出现的界面,如何编程才能实现?
  • 内核编程问题求教!!!!
  • 求教:Linux下的socket编程
  • 编程技巧求教
  • socket 编程recvfrom 问题...求教
  • 求教一个shell编程问题!
  • 求教linux shell编程问题
  • 求教linuxC编程
  • linux下的Gmail编程求教
  • 求教关于socket编程问题
  • LIUNX编程问题求教
  • 初接触linux,高分求教linux下C++编程。
  • 求教,Linux下如何编程实现播放视频文件?
  • 【求教】还是关于linux下用纯c编程的问题!!(在线等)
  • 求教linux下的mysql编程连接!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 求教linuxC编程 iis7站长之家
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3