+ -
当前位置:首页 → 问答吧 → 自動依照月份備份的Shell Script

自動依照月份備份的Shell Script

时间:2010-03-26

来源:互联网

version:HP-UX HPUX11i B.11.11 U 9000/785 (ta)

#!/bin/sh
echo "one:compress"
echo "two:umcompress to folder /tmp “
read choice
 case $choice in
"one")
        tar -cvf backup_`date +%Y%m%d_%X`.tar /data
        echo "tar ok"
        if [ /data/*2010*.tar ];then
        gzip *2010*.tar
        chmod 755 *2010*.*.gz
        echo "gzip ok"
        fi
        ;;
"two")
 #      echo "start"

       if [ /data/*2010*.*.gz ];then
        gzip -d *2010*.*.gz
        mv *2010*.tar /tmp
 fi
  ;;
   esac
输入one进行备份及压缩,输入two进行解压到/tmp,小弟找不到如何解压到某个路径,只能用mv,
其实小弟想问如果我加上crontab 来进行自 动排程
$crontab –e 30 * * * * PATH=“$PATH:.”
$crontab –e 31 * * * * a.sh
$crontab –e 32 * * * * one
因为script要输入指令,不晓得如何安排在同一行 ,只能用三行表示,不过我还没试过,不知道行的通吗? 不知道有没有大大可以帮小弟个忙,小弟初学很多指令
不道如何用,请各位大大讲解。
谢谢

作者: esprit000   发布时间: 2010-03-26

引用自: esprit000 於 2010-03-26 17:19
version:HP-UX HPUX11i B.11.11 U 9000/785 (ta)

#!/bin/sh
echo "one:compress"
echo "two:umcompress to folder /tmp “
read choice
 case $choice in
"one")
        tar -cvf backup_`date +%Y%m%d_%X`.tar /data
        echo "tar ok"
        if [ /data/*2010*.tar ];then
        gzip *2010*.tar
        chmod 755 *2010*.*.gz
        echo "gzip ok"
        fi
        ;;
"two")
 #      echo "start"

       if [ /data/*2010*.*.gz ];then
        gzip -d *2010*.*.gz
        mv *2010*.tar /tmp
 fi
  ;;
   esac
輸入one進行備份及壓縮,輸入two進行解壓到/tmp,小弟找不到如何解壓到某個路徑,只能用mv,
其實小弟想問如果我加上crontab 來進行自 動排程
$crontab –e 30 * * * * PATH=“$PATH:.”
$crontab –e 31 * * * * a.sh
$crontab –e 32 * * * * one
因為script要輸入指令,不曉得如何安排在同一行 ,只能用三行表示,不過我還沒試過,不知道行的通嗎? 不知道有沒有大大可以幫小弟個忙,小弟初學很多指令
不道如何用,請各位大大講解。
謝謝
幾個建議:
1. 讓shell來接變數, 可以解決cron的問題. (你的方法是行不通的~)
2. 接變數就要使用到變數$#, $1.
3. 如果互動模式是必須的, 那就是先判斷是否有參數, if yes 直接執行, if not 再用read來實做互動.
4. 由於你的script有多個觸發點, 建議將要執行的指令寫成兩個function, 以便程式呼叫使用.
5. 壓tar時, 建議用相對路徑, 不要用絕對路徑. ex. cd /dir; tar cf /bak/t.tar ./data1
6. 解tar時, 可以先變更目錄後再解tar ball. ex. cd /tmp; tar xf /bak/t.tar
7. 壓縮gzip與壓tar可以合併使用. tar -cf - ./data1 | gzip > /bak/t.tar.gz; gzip -cd /bak/t.tar.gz | ( cd /tmp; tar xf /bak/t.tar);

建議到此, 剩下的, 就只能靠你自己了!

regards,

Stanley Huang

作者: wenlien   发布时间: 2010-03-27