沒(méi)那么神秘:Linux下生存實(shí)錄(7) |
發(fā)布時(shí)間: 2012/9/8 15:14:07 |
四、系統(tǒng)(QQ:小默862693539)管理 linux系統(tǒng)(QQ:小默862693539)管理是很大一個(gè)領(lǐng)域,有專(zhuān)門(mén)的一群從業(yè)者靠此養(yǎng)家糊口,我無(wú)法在此進(jìn)行詳細(xì)講解,僅以幾類(lèi)常規(guī)操作拋磚引玉。 1、數(shù)據(jù)備份。隨著對(duì)電腦的依賴(lài),我們多多少少積累了些重要資料,可以說(shuō)這些資料是形成我們"個(gè)人能力"的主要來(lái)源,一旦丟失,多年的工作經(jīng)驗(yàn)、生活點(diǎn)滴均將化為煙云,這是我們一筆無(wú)形的財(cái)富。硬盤(pán)老化、操作系統(tǒng)(QQ:小默862693539)異常、電腦遺失等等都會(huì)導(dǎo)致資料丟失,為避免損失,應(yīng)該養(yǎng)成定期備份數(shù)據(jù)的習(xí)慣。 就我個(gè)人經(jīng)驗(yàn)來(lái)看,數(shù)據(jù)備份要注意以下幾點(diǎn): 1)存放備份的介質(zhì)。必須要有一塊獨(dú)立外置硬盤(pán)(500G移動(dòng)硬盤(pán)外套硬盤(pán)盒)用于存放備份數(shù)據(jù),而不是在電腦內(nèi)置硬盤(pán)上的一個(gè)分區(qū)備份到另一個(gè)分區(qū),否則即便有備份,一旦內(nèi)置硬盤(pán)出問(wèn)題,原始數(shù)據(jù)和備份數(shù)據(jù)都將掛掉; 2)內(nèi)置硬盤(pán)的分區(qū)。電腦內(nèi)置硬盤(pán)在分區(qū)規(guī)劃時(shí),應(yīng)單獨(dú)創(chuàng)建一個(gè)文件系統(tǒng)(QQ:小默862693539),專(zhuān)門(mén)用于存放需要定期備份的數(shù)據(jù)(這里的幾個(gè)說(shuō)法容易混淆,概念澄清下,外置硬盤(pán)中用于存放備份而來(lái)的分區(qū)不妨稱(chēng)之為backup分區(qū),內(nèi)置硬盤(pán)中用于存放我們重要資料的需要被定期備份出去的分區(qū)稱(chēng)之為data分區(qū)); 3)其他項(xiàng): A)全備,每次將所有數(shù)據(jù)資料全量備份而非僅備有差異部分(非增備); B)兩個(gè)快照,任何時(shí)候應(yīng)保留上上次和上次的兩個(gè)備份快照,完成本次備份后再刪除上上次備份快照,避免備份過(guò)程出問(wèn)題導(dǎo)致歷史備份丟失; C)直備,保持?jǐn)?shù)據(jù)資料完整目錄結(jié)構(gòu),直接備份到外置硬盤(pán)的backup分區(qū),說(shuō)白了就是直接復(fù)制,不進(jìn)行任何再加工; D)月備,數(shù)據(jù)備份的周期要視你具體數(shù)據(jù)量和數(shù)據(jù)更新頻率而定,個(gè)人而言,100g的數(shù)據(jù)量,備份耗時(shí)差不多25分鐘,我一般每月備份一次(小提示,將工作、生活上需要定期做的事項(xiàng)按不同執(zhí)行周期分類(lèi)梳理到一張電子表格中,不時(shí)看看,你會(huì)發(fā)現(xiàn),原來(lái)我是那么井井有條--引至《愛(ài)我何需理由》,作者:自戀小王子(這是筆名,真名吳鳳輝,嘎嘎嘎嘎~):-)。 在備份軟件方面,無(wú)須其他特殊軟件,只要有tar、bzip2、gzip、zip、unzip幾個(gè)常見(jiàn)命令即可。下面依次以直接打包備份、打包壓縮備份、打包壓縮帶進(jìn)度備份三種方式,由淺入深介紹具體備份操作。 1)直接打包備份。為了保持目錄結(jié)構(gòu),通過(guò)采用打包命令tar進(jìn)行備份。比如,希望將/data目錄備份到名為backup_120g的外置硬盤(pán)上,備份文件命名為data_backup.tar,那么完整命令及參數(shù)如下:
其中,-p表示完全保持/data目錄下所有文件的文件屬性,-cf表示需要?jiǎng)?chuàng)建一個(gè)備份文件且命名為backup.tar。 數(shù)據(jù)備份的時(shí)間點(diǎn)往往是我們最為關(guān)心的信息,所以習(xí)慣上備份文件名應(yīng)該加上時(shí)間戳。linux的date命令能根據(jù)不同參數(shù)生成指定日期信息,完整的命令及參數(shù)如下:
其中,包裹命令date的"`"符號(hào)是tab鍵正上方、1鍵左邊那個(gè)鍵,而非單引號(hào)。以指示shell優(yōu)先執(zhí)行整個(gè)命令行中該符號(hào)對(duì)包裹的命令(即,date +%m-%d)。 如果外置硬盤(pán)空間有限,/data中又包含部分不那么重要的數(shù)據(jù)(如,臨時(shí)目錄tmp,與windows虛擬機(jī)同享文件的目錄share_folder),那么備份時(shí)可以將這些目錄排除掉,通過(guò)tar的--exclude參數(shù)即可實(shí)現(xiàn):
其中,--exclude參數(shù)語(yǔ)法非常特殊(其他命令中的該參數(shù)也是如此),注意幾點(diǎn):A)命令中的所有參數(shù)必須為絕對(duì)路徑而非相對(duì)路徑,且不能用~等等縮寫(xiě)字符;B)所有路徑最后不能以"/"結(jié)尾。 2)打包壓縮備份。如果排除了部分不重要數(shù)據(jù)后外置硬盤(pán)空間仍然緊張,可以考慮對(duì)打包文件進(jìn)行壓縮。linux上常見(jiàn)的壓縮命令包括gzip和bzip2,由于兩者采用的不同壓縮算法,導(dǎo)致前者壓縮率較低但速度較快,后者壓縮率較高但速度慢,但相關(guān)用法差不多,請(qǐng)按需擇優(yōu)選用(本例以gzip為例,若需bzip2則直接替換即可)。打包和壓縮是兩個(gè)獨(dú)立操作,寫(xiě)兩條命令多麻煩!不用,借助linux強(qiáng)大的管道和重定向機(jī)制,可以在一條命令中以非常自然的方式實(shí)現(xiàn):
別被這些奇怪符號(hào)嚇著,管道符("|")用于實(shí)現(xiàn)"打包一點(diǎn)壓縮一點(diǎn)",重定向符(">")用于實(shí)現(xiàn)"壓縮一點(diǎn)寫(xiě)一點(diǎn)到備份文件中",這樣,串起來(lái)就是"不停打包、不停壓縮、不停寫(xiě)文件"的流水作業(yè),理解了吧!其中,上個(gè)命令中-cf后面跟的是備份文件名,本命令中改為"-",就在告訴shell說(shuō),"先別急著寫(xiě)文件,你(shell)把我(tar)剛生成的數(shù)據(jù)流傳遞給后面負(fù)責(zé)壓縮的兄弟(gzip),它知道該寫(xiě)哪個(gè)文件,謝謝哈~"。說(shuō)明兩點(diǎn),A)你是否注意到備份文件的擴(kuò)展名為".tar.gz",不僅本例,涉及l(fā)inux主題的網(wǎng)站提供的下載幾乎都采用這種命名方式,這叫命名約定,通常來(lái)說(shuō),如果僅打包不壓縮則擴(kuò)展名為".tar",如果打包且采用gzip壓縮則擴(kuò)展名為".tar.gz",如果打包且采用bzip2壓縮則擴(kuò)展名為".tar.bz"或".tar.bz2";B)其實(shí)tar命令使用--gzip和--bzip2參數(shù)可以直接實(shí)現(xiàn)打包壓縮,無(wú)須像上例,采用管道和重定向來(lái)實(shí)現(xiàn),但,為精確顯示整個(gè)備份進(jìn)度率,必須采用這種變通方式,請(qǐng)接著看。 3)打包壓縮帶進(jìn)度備份。要顯示備份進(jìn)度,必須得事前知道待備份數(shù)據(jù)(/data)的大小,可通過(guò)du命令實(shí)現(xiàn):
其中,-s表示計(jì)算/data整個(gè)目錄包括子目錄下所有文件的大小總和,-k表示計(jì)算結(jié)果以k為單位(或者m、g、t等)顯示,單位的精度越高,在計(jì)算百分比進(jìn)度時(shí)就越精確。 待備份目錄大小知道了,如何計(jì)算進(jìn)度?上面介紹過(guò),打包、壓縮、寫(xiě)文件都在借助管道傳遞數(shù)據(jù)流,如果能查看到管道中已經(jīng)傳遞的數(shù)據(jù)量大小,用此大小除以總大小不就能顯示出當(dāng)前備份進(jìn)度了么?噹噹噹噠~,pv就可以,顧名思義pv就是pipe viewer,明白了吧,管道查看器,它是監(jiān)測(cè)管道數(shù)據(jù)的超級(jí)武器,沒(méi)事多用用、系統(tǒng)(QQ:小默862693539)更健康。
其中,xxx部分請(qǐng)用前面du命令輸出結(jié)果(待備份目錄/data總大小),并手工添加單位k。效果如下: (可視化備份進(jìn)度) 好了,到此包括打包、壓縮、排除不重要目錄、打時(shí)間戳、顯示進(jìn)度等特性在內(nèi)的linux常規(guī)備份操作就介紹完了,一條命令啰哩吧嗦說(shuō)了一大堆,看來(lái)的確是老了(小吳,好好干,路還長(zhǎng))。內(nèi)容是多了點(diǎn),一次沒(méi)看明白就多看幾次,其實(shí)也不復(fù)雜,我們一起看看簡(jiǎn)化模型吧(啰嗦的平方就是在下,謝謝,:O)。
有備份就有恢復(fù),相對(duì)備份操作而言,恢復(fù)就太簡(jiǎn)單了。仍用tar命令,參數(shù)不同而言:
其中,-x表示執(zhí)行解壓解包操作,采用哪種解壓算法由tar自行偵測(cè)后決定,-v表示顯示以及解壓出的文件列表,-f表示該參數(shù)后面緊跟的就是待解壓的文件名,-C表示該參數(shù)后面緊跟是解壓后的文件存放路徑。 這次真的說(shuō)完了,沒(méi)想到我對(duì)樸實(shí)的tar如此動(dòng)情,不知不覺(jué)談了這么多關(guān)于她的點(diǎn)滴。在介紹她的同時(shí),我也再次品味到了unix(linux的大哥)哲學(xué)——分工明確、各司其職、齊心協(xié)作。(tar哭著說(shuō),你娶我是想更接近我哥)。 2、碎片整理。要理解碎片,必須先了解硬盤(pán)基本結(jié)構(gòu)和硬盤(pán)讀寫(xiě)機(jī)制兩個(gè)概念。之后,再看看不同操作系統(tǒng)(QQ:小默862693539)寫(xiě)文件的策略,你自然會(huì)明白碎片在linux下是啥東東。 硬盤(pán)基本結(jié)構(gòu)。硬盤(pán)內(nèi)部是由多張磁片和一個(gè)機(jī)械臂組成,磁片上最小單位是扇區(qū),一旦硬盤(pán)停止工作后(如,關(guān)機(jī)),機(jī)械臂將復(fù)位到第一個(gè)扇區(qū)處。對(duì)于扇區(qū)而言,不論寫(xiě)入數(shù)據(jù)有多小,一旦占用了某個(gè)扇區(qū)后,其他數(shù)據(jù)就不能再寫(xiě)入通過(guò)扇區(qū),即便該扇區(qū)還有空余空間(這就是為什么我們說(shuō)一個(gè)大文件要比拆分為多個(gè)小文件的合計(jì)要小一些的原因)。每次讀或?qū)懖僮髦,機(jī)械臂先移動(dòng)尋找到要訪(fǎng)問(wèn)的扇區(qū),這個(gè)過(guò)程稱(chēng)之為“尋址”,由于機(jī)械臂移動(dòng)是個(gè)物理動(dòng)作,如果讀寫(xiě)操作老是在不同扇區(qū)間不停移來(lái)移去,勢(shì)必會(huì)增長(zhǎng)讀寫(xiě)操作耗時(shí)。 硬盤(pán)讀寫(xiě)機(jī)制。我們?yōu)槊總(gè)扇區(qū)編個(gè)號(hào),最開(kāi)始的是0號(hào)扇區(qū)、接著是1號(hào)、然后2號(hào)、以此類(lèi)推,任何操作系統(tǒng)(QQ:小默862693539)都會(huì)嘗試盡量將文件寫(xiě)入靠前的扇區(qū),若已被占用則嘗試下個(gè)扇區(qū),直到找到空閑扇區(qū),這樣,理想情況下,整個(gè)硬盤(pán)應(yīng)該是先用完靠前的空間。 了解了基礎(chǔ)概念后,我們假定有A、B、C三個(gè)文件,依次連續(xù)占據(jù)0~3號(hào)扇區(qū)、4~7號(hào)扇區(qū)、8~9號(hào)扇區(qū),如下圖所示: (碎片:初始狀態(tài)) 這時(shí),用戶(hù)編輯了文件B,增加了大量?jī)?nèi)容,導(dǎo)致文件B體積增大了2個(gè)扇區(qū)的大小,windows寫(xiě)文件時(shí)采用的策略——“可以接受兩地分居”,即,將增加部分內(nèi)容寫(xiě)入最靠前空閑的10號(hào)和11號(hào)兩個(gè)扇區(qū),如下圖所示: (windows寫(xiě)文件策略) 以后,一旦用戶(hù)需要訪(fǎng)問(wèn)文件B,系統(tǒng)(QQ:小默862693539)先尋找到4號(hào)扇區(qū),將4~7號(hào)扇區(qū)讀入內(nèi)存,再尋找到10號(hào)扇區(qū),將10~11號(hào)扇區(qū)讀入內(nèi)存,最后將這6個(gè)扇區(qū)合并供用戶(hù)使用。設(shè)想一下,剛裝好系統(tǒng)(QQ:小默862693539)時(shí)硬盤(pán)上有5000個(gè)文件,其中1000個(gè)在后來(lái)系統(tǒng)(QQ:小默862693539)使用過(guò)程中被人為或程序調(diào)整過(guò)大小,那么這1000個(gè)文件個(gè)個(gè)都被截成幾段,這就形成了“碎片”,文件越多、文件寫(xiě)入次數(shù)越多,產(chǎn)生的碎片就越多。 linux寫(xiě)文件采用的是與windows恰好相反的另一個(gè)策略——“分開(kāi)就不是家庭”,即,將文件B后面緊挨著的文件C向后移動(dòng)兩個(gè)扇區(qū),移動(dòng)后文件C就從先前的8~9號(hào)扇區(qū)變成10~11號(hào)扇區(qū),8~9號(hào)扇區(qū)空出來(lái)用于存放文件B增大的部分,如下圖所示: (linux寫(xiě)文件策略) 顯然,按linux的策略,無(wú)論硬盤(pán)中有多少文件、寫(xiě)入多少次,系統(tǒng)(QQ:小默862693539)永遠(yuǎn)不可能產(chǎn)生碎片。再回到前面的問(wèn)題,linux碎片整理代表什么?代表沒(méi)事找抽~~ 有童鞋問(wèn),每次我寫(xiě)完文件要保持時(shí),系統(tǒng)(QQ:小默862693539)都要移動(dòng)那個(gè)文件后面的所有文件,豈不是更慢?移動(dòng)是肯定的,但linux也不會(huì)那么弱智,至少有三種輔助手段緩解這個(gè)問(wèn)題:A)數(shù)據(jù)搬遷不一定在我們編輯完文件后立馬執(zhí)行(即便已經(jīng)關(guān)閉了文件),系統(tǒng)(QQ:小默862693539)會(huì)結(jié)合CPU、內(nèi)存、IO等資源使用情況,綜合判斷何時(shí)搬遷,以減少大規(guī)模移動(dòng)數(shù)據(jù)對(duì)用戶(hù)帶來(lái)的不好感知;B)linux會(huì)記錄下經(jīng)常被更改的文件,在適當(dāng)時(shí)候?qū)⑦@些文件后面緊跟的文件向后移動(dòng),以騰出空間讓這些頻繁更改的文件在下次體積增大時(shí)可以直接使用連續(xù)扇區(qū);C)系統(tǒng)(QQ:小默862693539)采用dd命令在底層進(jìn)行數(shù)據(jù)搬遷,效率不是cp等輩可觸及的。linux通過(guò)這三種方式,既實(shí)現(xiàn)了消除碎片,又讓用戶(hù)對(duì)整個(gè)過(guò)程感知最小化。 其實(shí),我們可以算本帳。windows是"今朝有酒今朝醉",即,這種方式在寫(xiě)文件的當(dāng)下感覺(jué)是最直接,但后續(xù)每次訪(fǎng)問(wèn)這個(gè)文件都要不同移動(dòng)機(jī)械臂;而linux是"今天的短暫擁堵是為了明天長(zhǎng)久的通暢"(引至成都BRT建設(shè)宣傳語(yǔ)),即,在寫(xiě)文件當(dāng)下是要慢些,但后續(xù)每次訪(fǎng)問(wèn)就會(huì)一致性讀入。兩種方式,隨著文件數(shù)目的增加,個(gè)人覺(jué)得后者更優(yōu)! 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |