今天開始自己的shell指令碼練習,剛好公司有太伺服器,要時間對資料的cp是按月的:
考慮:首先尋找規律,發現都放置在/opt/www/aaa/ 裡面有很多的2級和3級目錄和檔案,但我追蹤要備份的是年月為檔名的格式:2015_06
這樣的格式,首先我們不清楚這個目錄下有多少這樣的2015_06的子目錄所以需要統計:
find /opt/www/aaa -name 2015_06 檢視了下我要備份的地方
#!/bi#admin fengtaotao email:
23956580
@qq.com
#fri julok 接下來修改下許可權和crontab 的定時316:35:48 cst 2015
pathh=/opt/www/acc/musicfile/ @首先定義的是原始檔路徑 pathd=/opt2/musicfile/ @要備份到的路徑datem=`date +%m` @這裡我定義乙個當前月的顯示 原因是我在crontab中是要備份的是上個月的
#getmonth @簡單的注釋 我喜歡吧注釋寫在行**下面
if [ "$datem" == 01 ];then @當前月是1月份那麼當前年-1從而備份去年的12月份
datem="_12" @如果 當前月是1月份 那麼僵變數修改為12月份
datey=`date +%y`
datey=$(($datey-1)) @將年份改為去年 這樣就是去年的12月份
else
datem="_0$(($datem-1))"
datey=`date +%y` @考慮到每年的1月份要備份去年的
fi#getfullyear
dird="
$datey$datem"#
echo
"$dird
"readd=`date +%n`.txt
find $pathh -name $dird &>>$readd
for i in $(cat $readd);do
aac=$(echo $i | awk -f "/"
'') aac=$$
cp -r $i $aac &>> dbcp.log
done
rm -rf $readd
chmod u+x dbback.sh2.當然我也寫了乙個手動備份的指令碼crontab -e01
1 * * /root/bash/dbback.sh
沒個月的1號 凌晨1點整開始備份
#!/bin/bash這個我們可以再指令碼的同目錄下 建立乙個list.txt文件,在裡面寫入我們需要備份的名稱列表預設是換行為乙個名稱#admin fengtaotao email:
23956580
@qq.com
#fri jul
316:35:48 cst 2015
pathh=/opt/www/acce/musicfile/pathd=/opt2/musicfile/
touch
ulist.txt
readd=ulist.txt
for a in $(cat list.txt);do
find $pathh -name $a &>>$readd
done
for i in $(cat $readd);do
aac=$(echo $i | awk -f "/"
'') aac=$$
cp -r $i $aac &>>dbcp.log
done
rm -rf $readd
shell指令碼記錄
size x large shell size case語法 case 1 in start start stop stop usage esac 檢視系統32位還是64位 uname m x86 64 arch x86 64 size x large grep size grep命令hang住的問...
shell指令碼記錄
shell學習 shell 指令碼格式 檔案以.sh結尾,檔案頂行輸入 bin bash 變數 變數名 變數值 獲取變數值 變數名 環境變數 使用export 變數名 這樣在任何位置都可以獲取到變數值 shell 預設賦值變數都是字串 0 shell檔名 n 第n個變數 變數數量 所有變數 所有變數...
Shell指令碼筆記
1 home目錄下的 bashrc指令碼檔案記錄提示文字顏色等各類設定 2 bash歷史記錄檔案 bash history 3 echo執行之後會新增換行符 4 bash中不會對單引號變數求值,而是原樣輸出 5 echo e 包含轉義序列的字串 6 var value不同於var value,前者是...