shell指令碼筆記 原創不斷記錄

2022-05-22 04:18:12 字數 1892 閱讀 4089

今天開始自己的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 jul  

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

ok  接下來修改下許可權和crontab 的定時

chmod u+x dbback.sh

crontab -e01

1 * * /root/bash/dbback.sh

沒個月的1號 凌晨1點整開始備份

2.當然我也寫了乙個手動備份的指令碼

#!/bin/bash

#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

這個我們可以再指令碼的同目錄下 建立乙個list.txt文件,在裡面寫入我們需要備份的名稱列表預設是換行為乙個名稱

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,前者是...