Shell腳本寫的備份還原工具 –reset.sh

reset.sh腳本分兩個功能模塊,備份模塊和還原模塊;
備份:備份指定文件到當前目錄,以備份時日期做為文件名
還原模塊:可選擇性的還原指定時間的備份記錄

  • 前言:

這周在學習Shell腳本編程,學習用到測試環境是Centos6和Centos7,老師建議我們寫一個reset.sh 腳本可以實現系統環境一鍵還原系統工作環境,可以避免將來重裝系統后繁雜的配置,我就用目前學習的知識自己編寫了一個工具,reset.sh,可以實現交互式的備份還原當前系統的配置文件,由于沒有學習到循環和功能調用,部分代碼可能不夠精簡,實現方法也有點笨,等到學到新技術后,再來更新腳本。

  • 設計思路

  1. 所有的配置備份文件繼承統一的命名規則,NAME.bak_VERSION
    NAME:需要備份的配置文件的名稱。
    VERSION:系統的版本信息,方便腳本中變量賦值。
  2. 運行腳本,會自動創建備份目錄,文件的備份路徑默認是在程序運行的當前目錄創建備份文件夾,命名規則cfg_back_VERSION
  3. 腳本中記錄了需要備份的配置文件的路徑信息,每次執行腳本都會將這些文件,保存到cfg_backup_VERSION/YY-MM-DD—HH-mm-ss/中,文件夾的名稱為當前時間。
  4. 腳本執行可以交互式的恢復備份文件中指定日期的配置備份文件。
  • 程序功能展示

  1. ? 功能選擇界面

1222222222222222

2333333333333333

1)用戶可隨意自行DIY自己的個性LOGO,顏色每次登陸隨機改變。

2)用戶可根據自己的操作需求,輸入1或者2,來決定是要備份還是還原系統配置。

3)對于個別英語不好或者手愛抖的同學和朋友,我們還特意設置了親切友好的翻譯交互方式!

?2.配置備份模塊

beifeng

bfffffffffff

1)如果你選擇了2,并且回車了,你會發現程序并沒有執行,光標會在這里等待你9秒(糾結癥和手殘黨的福音)直到你再此敲擊回車,或者等到9秒后備份開始執行。

2)程序執行后會提醒你開始備份,和結束備份,而且將備份文件的絕對路徑信息通過綠顏色標注出來,每個文件是否備份完成也會提醒。

3.配置還原模塊

huanyuan

laobai

1)如果你選擇了1,那么你會發現許多你曾經備份過的文件被列了出來,你可以選擇其中一個你想要恢復回去的日期,輸入行前面的數字,當然如果你不按要求輸入數字,

依然會得到親切友好的提醒的哦,中英文雙翻?。?/p>

2)輸入正確數字,回車后,會看到開始配置,和配置完成的提醒,配置過的文件也時用綠色標出,成敗一目了然。這里有一個后臺操作,界面是不顯示的,腳本在還原配置之前會提前把目前系統的配置做一個備份,然后再執行還原,這樣防止誤操作帶來的不可逆損失!

chenggongl

  • 腳本展示

1.首先進行變量聲明,將系統中用到的變量提前解釋,因為我寫的腳本我回頭看都看不懂!!Centos6 和7 的網卡名稱不一樣,所以這里分別進行提取賦值給N1和N2,

dm1

2.常量聲明中,定義了要備份文件的絕對路徑信息,還有那個“親切問候語”庫;

i用來產生隨機數,依次和1到6進行比較,進而給JOKE賦值,JOKE會在后面登陸錯誤提示信息處被打印;這里實現也可以用循環!

dm2

3.個性化LOGO設計;每一行顏色都是隨機產生的。

下面是登陸信息提示,首先判斷用戶輸入值是否是數字,然后再判斷是否大于2;如果不合理輸出對應的提示語,外加上隨機的一句JOKE!

dm3

4.腳本里有兩部分內容,沒學到調用功能,只會順序執行,想了個辦法就是給命令行前加注釋#,定義了兩個變量 Reset 和 Backup通過用戶輸入的值,給對應的參數賦值,來注釋掉對應的行。

這里通過ls? -dtl 和 sed 分別把文件名按修改時間排序,將文件名剪切了出來。但是不知道如何給行加行號,就重定向了一個temp臨時文件中,用完后刪除temp文件。

dm4

 

5.為防止用戶誤操作,每次還原前,都是提前備份的,這里出現一個問題,Reseth和Backup被替換成#后,系統默認將他識別為命令,會報錯,所以用了錯誤重定向,將報錯除去。

dm5

  • 后言

  1. 哈哈,一個Shell 初學者寫的玩的,程序員都時復雜的功能簡單做,會的不多,只能簡單的功能復雜做了,不過是在學習嘛,我覺得總結知識最有效的方法就是用一用,這個腳本基本上用上了老師講的一些編寫腳本的知識,雖然功能簡單,卻也調試了好幾天?。〈a也有幾行,不斷累積到了一百多行!不斷有錯誤,也不斷有新的想法,那種有想法就能克服各種困難,實現的感覺還是很棒的!
  2. 一開始我是寫了兩個腳本的,一個備份用,一個還原用,想整合成一個,但是功能調用還沒學,就想了個在行首賦值#的想法,,報錯,腳本不足的地方很多,比如很多地方可以用循環來簡化,功能調用等。

3.那么問題來了,你一定會問怎么確認備份沒問題,我的回答是,我也不知道,哈哈,不夠我都做過測試了,但是可能還有別的錯誤,等待大家來發現,歡迎批評指正。

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95959

(18)
知行合一知行合一
上一篇 2018-04-14 21:05
下一篇 2018-04-14 21:15

相關推薦

  • Linux系統幫助文件使用——man命令

    Linux系統命令、各命令下使用格式、選項紛繁復雜,不用全記得,在使用系統過程中,可以使用man命令幫助手冊,隨時查看各命令詳細用法

    Linux筆記 2018-05-13
  • 構建一個mini linux系統

    mini linux: 啟動流程: centos6:post》bootsequence(bios)》BootLoader(mbr)》kernel(如無法直接識別硬盤驅動,需借助ramdisk)》rootfs》/sbin/init centos7:post》bootsequence(bios)》BootLoader(mbr)》kernel(如無法直接識別硬盤驅…

    Linux筆記 2018-06-06
  • N31Linux第三周

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]#who |cut -d ‘ ‘ -f1 |sort -u 2、列出最后登錄到當前用戶系統的用戶相關信息。 [root@localhost ~]#w |cut -d ‘ ‘ -f1 |…

    2018-07-16
  • YUM配置安裝使用

    一、YUM簡介 ??? 1.?YUM: Yellowdog Update Modifier 完成RHEL系列前端自動解決依賴關系安裝工具,依賴rpm存在 ??? 2.工作模式:C/S?架構 ????? Server端(yum倉庫):依賴關系庫、原文件、校驗碼文件 ????? Client端:yum客戶端程序、配置文件(連接Server路徑信息) ??? 3.…

    Linux筆記 2018-04-22
  • centos7源碼編譯實現LAMP

    centos7源碼編譯實現LAMP 基于php-fpm

    2018-06-24
  • LINUX的哲學思想

    1.一切皆文件 把幾乎所有資源統統抽象為文件形式,不僅普通的文件,目錄、字符設備、塊設備、 套接字等還包括硬件設備,甚者通信接口等。在Linux 中都是以文件被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面。訪問任何設備都可以用統一的一個接口。方便統一管理 由眾多功能單一的程序組成。一個程序只做一件事,并且要做好,保證linux程序的高效運行。需要…

    Linux筆記 2018-06-27

評論列表(1條)

  • M30-Alvin阿峰
    M30-Alvin阿峰 2018-04-14 22:16

    很好很強大,特別是配圖,哈哈哈

欧美性久久久久