PCADV實驗室 » 電腦王51期「Linux Public 灌後餘生」參考資料 z

Easy Health Newexpensive Public Naked Forced

Prancing Dancing Public

PCADV實驗室 » 電腦王51期「Linux Public 灌後餘生」參考資料

Easy Health Newexpensive Public Naked Forced

利用ls指令將之前的備份檔清單用stdout的方式重新導入/tmp/backup.lst成為一個純文字檔,並且在導入當中利用sed指令配合參數1d刪除掉第一行的「總計 XXXX」敘述,讓backup.lst清單檔內只留下檔案清單

#Blackmail此 Prancing 定要備份的目錄
for backupdir in “/etc” “/homPorn BlackmailPublic e&#Public8221;
do
#找尋備份目錄最下層目錄名稱做為備份檔主檔名
i=2
while [ "`echo $backupdir | cut -d "" -f "$i"`" Public ]
do
i=$(($i+1))
done
backupdirtail=”`echo $backupdir | Prancing cut -d “/” -f “$(($i-1))”`”

這裡我們利用一個迴圈,簡單的從備份路徑抓備份目錄名稱,放進backupdirtail變數做為備份檔的儲存檔案

#判斷要進行完全備份還是增量備份
i=1
while [ "$i" -le "`cat "tm kp/backup.lst" | wc -l`" ]
do
backupname=”`sed -n “$i”p “/tmp/backup.lst” | cut -d ” ” -f 6`”
if [ "`date -d $backupname +%s`" -ge "`date -d "$fullbackupday days ago" +%s`" ]; then

利用wc指令計算截取的backup.lst備份檔案清單行數,再代入while迴圈中。然後用sed指令取出每一行的內容,再利用grep指令判斷該行所指出的檔案是否為一個fullback檔案,並且是否為目前備份的目錄。如果條件符合,則製作增量備份清單後開始進行增量備份

#有找到完全備份檔,進行增量備份後結束
if [ "`sed -n "$i"p "tmp/backup.lst" | grep "fullbackup" | grep "$backupdirtail"`" ]; then
#製作增量備份檔清單
find “$backupdir” -newer “last_backup_time” -type f > /tmp/incbackup.lst 2> /dev/null

if [ -s "tmp/incbackup.lst" ]; then
#製作已移除檔案清單
sed -n “$i”p “/tmp/backup.lst” | cut -d ” ” -f 9 > “/tmp/tmpfile1″
tar tf “/backup/`cat “/tmp/tmpfile1″`” | awk ‘{}’ > “/tmp/tmpfile2″
j=1
while [ "$j" -le "`cat "tmp/tmpfile2" | wc -l`" ]
do
[ ! -e "`sed -n "$j"p "tmp/tmpfile2"`" ] && sed -n “$j”p “/tmp/tmpfile2″ >> “/backup/$backupdirtail`date +%Y-%m-%d`.rm.lst”
j=$(($j+1))
done

這裡我們是利用sed指令的格式化功能代入迴圈$i的變數擷取出每行內容,再配合cut指令擷取/tmp/backup.lst純文字檔清單中的檔名欄位,然後利用awk指令將取出的檔案及路徑最前面加上根目錄位置「/」

接著再取出已經備份的檔案清單並且與新增檔案相比較,如果檔案不存在原本的備份清單中,則將檔案記錄起來,以便還原時能根據清單設定值還原原本的檔案狀態

#根據清單備份並加上日期
tar zcf “/backup/$backupdirtail`date +%Y-%m-%d`.tar.gz” -T “/tmp/incbackup.lst” 2> “/dev/null”
fi
rm “/tmp/incbackup.lst”
break
fi
fi
i=$(($i+1))
done

根據上面製作的新進檔案清單incbackup.lst內容將新進檔案備份起來

#進行完全備份
if [ "$i" -gt "`cat "tmp/backup.lst" | wc -l`" ]; then
tar zcf “/backup/$backupdirtail”"`date +%Y-%m-%d`.fullbackup.tar.gz” “$backupdir” 2> “/dev/null”

如果在上面的迴圈當中都沒有找到之前備份的封裝檔的話,變數i會一直累加直到超過backup.lst備份清單檔總行數才會脫離迴圈,這裡我們只要判斷變數是否i超過了backup.lst備份清單檔總行數,如果是,則表示沒有找到完全備份封裝,所以開始進行完全備份作業

#移除超過保存天數的備份檔
i=1
while [ "$i" -le "`cat "tmp/backup.lst" | wc -l`" ]
do
backupname=”`sed -n “$i”p “/tmp/backup.lst” | cut -d ” ” -f 6`”
if [ "`date -d $backupname +%s`" -lt "`date -d "$(($reserveday-$fullbackupday)) days ago" +%s`" ]; then tPCADV實驗室 » 電腦王51期「Linux Public 灌後餘生」參考資料a s Prancing Blackmail hPCADV實驗室 » 電腦王51期「Linux Public 灌後餘生」參考資料a y Porn