壓縮技術(shù)的原理:
1. 一般計(jì)算機(jī)系統(tǒng)使用bytes單位來計(jì)量的,,然而計(jì)算機(jī)最小的計(jì)量單位應(yīng)該是bits,,也就是1 byte = 8bits 實(shí)際上壓縮技術(shù)原理就是用bit來代替byte 作為最小計(jì)量單位,,把那些byte中沒有利用的bits利用起來,。舉例:存儲(chǔ)數(shù)字1,;用byte 表示:0000 0001 ,;壓縮技術(shù)就是把末尾1前面的0利用起來。
2.另外一種壓縮技術(shù)也很有趣,,他是將重復(fù)的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)記錄的,。舉例來說,如果你的數(shù)據(jù)為『 111....』共有 100 個(gè) 1 時(shí),, 那么壓縮技術(shù)會(huì)記錄為『 100 個(gè) 1』而不是真的有 100 個(gè) 1 的位存在,!這樣也能夠精簡檔案記錄的容量呢!
Linux 常見的壓縮文檔擴(kuò)展名:
*.gz gzip 程序壓縮的檔案,;(windows可以使用)
*.bz2 bzip2 程序壓縮的檔案,;
*.tar tar 程序打包的數(shù)據(jù),并沒有壓縮過,;
*.tar.gz tar 程序打包的檔案,,其中并且經(jīng)過 gzip 的壓縮
*.tar.bz2 tar 程序打包的檔案,其中并且經(jīng)過 bzip2 的壓縮
由于 gzip;bzip2,指令每次只能對(duì)一個(gè)檔案來壓縮與解壓縮,。因此此時(shí)用tar 指令將程序打包成一個(gè)文檔顯得十分必要,。
[root@www ~]# gzip [-cdtv#] 檔名
[root@www ~]# zcat 檔名.gz(查看壓縮過的壓縮文檔)
-c :將壓縮的數(shù)據(jù)輸出到屏幕上,可透過數(shù)據(jù)流重導(dǎo)向來處理,;
-d :解壓縮的參數(shù),;
-t :可以用來檢驗(yàn)一個(gè)壓縮文件的一致性~看看檔案有無錯(cuò)誤;
-v :可以顯示出原檔案/壓縮文件案的壓縮比等信息,;
-# :壓縮等級(jí),,-1 最快,但是壓縮比最差,、 -9 最慢,,但是壓縮比最好!預(yù)設(shè)是-6
[root@www ~]# bzip2 [-cdkzv#] 檔名
[root@www ~]# bzcat 檔名.bz2(查看壓縮過的壓縮文檔)
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到屏幕上,!
-d :解壓縮的參數(shù)
-k :保留源文件,,而不會(huì)刪除原始得檔案喔!
-z :壓縮的參數(shù)
-v :可以顯示出原檔案/壓縮文件案的壓縮比等信息,;
-# :與 gzip 同樣的,,都是在計(jì)算壓縮比的參數(shù), -9 最佳,, -1 最快,!
看參數(shù)顯然可以得出bzip2 指令更佳他可以保留原文件哦,;但是gzip的.gz能在winrar 使用了,。
tar:廣泛使用,winrar可以識(shí)別
-c :建立打包檔案,,可搭配 -v 查察看過程中被打包的檔名(filename)
-t :察看打包檔案的內(nèi)容含有哪些檔名,,重點(diǎn)在察看『檔名』就是了,;
-x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開
特別留意的是,, -c, -t, -x 不可同時(shí)出現(xiàn)在一串指令列中,。
-j :透過 bzip2 癿支持迚行壓縮/解壓縮:此時(shí)檔名最好為 *.tar.bz2
-z :透過 gzip 的支持進(jìn)行壓縮/解壓縮:此時(shí)檔名最好為 *.tar.gz
-v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來,!
-f filename:-f 后面要立刻接要被處理的檔名,!建議 -f 單獨(dú)寫一個(gè)選項(xiàng)啰!
- C 目錄 :這個(gè)選項(xiàng)用在解壓縮,,若要在特定目錄解壓縮,,可以使用這個(gè)選項(xiàng)。
-p :保留備份數(shù)據(jù)的原本權(quán)限與屬性,,常用于備份(-c)重的配置文件
-P :保留絕對(duì)路徑,,亦即允許備份數(shù)據(jù)中含有根目錄存在
--exclude=FILE:在壓縮的過程中,不要將 FILE 打包,!
其實(shí)最簡單的使用 tar 就只要記憶底下的方式即可:
壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的檔案或目錄名稱
查 詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
僅 解壓部分檔案:
[root@www ~]# tar -jxv -f 打包檔.tar.bz2 待解開檔名 [root@www ~]# tar -jxv -f /root/etc.tar.bz2 etc/shadow 注意:解壓到某個(gè)目錄時(shí),,這個(gè)目錄必須要存在否則不成功; 這樣就講打包檔案中某一個(gè)需要的文件解壓出來,。
打包文件不包括某個(gè)目錄:
root@ubuntu:/home# tar -jcv -f etc.tar.bz --exclude=kernel /etc 打包/etc目錄不包括kernel目錄,。
按照文件時(shí)間打包:
按照文件mtime時(shí)間,之前的打包:
root@ubuntu:/tmp# tar -jcv -f newer.tar.bz2 --newer-mtime="150707" /home/zhenxiang/
(將目錄下15年7月7號(hào)之后的文件打包壓縮)
dd:建立一個(gè)大文檔(也可以直接備份甚至是直接從扇區(qū)備份噢)
[root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512 512+0 records in <==讀入 512 筆資料 512+0 records out <==輸出 512 筆數(shù)據(jù) 536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s # 這個(gè)指令的簡單意思如下: # if 是 input file ,,輸入檔案,。 那個(gè) /dev/zero 是會(huì)一直輸出 0 的裝置! # of 是 output file ,,將一堆零寫入到后面接的檔案中,。 # bs 是每個(gè) block 大小,就像文件系統(tǒng)那樣的 block 意義,; # count 則是總共幾個(gè) bs 的意忠,。 復(fù)制/etc/passwd -> /home/passwd
root@ubuntu:/# dd if=/etc/passwd of=/home/passwd
記錄了3+1 的讀入
記錄了3+1 的寫出
2000字節(jié)(2.0 kB)已復(fù)制,4.8703e-05 秒,,41.1 MB/秒
你可以說,, tar 可以用來備份關(guān)鍵數(shù)據(jù),而 dd 則可以用來備份整顆 partition 或 整顆 disk ,,不過,,如果要將數(shù)據(jù)填回到 filesystem 當(dāng)中, 可能需要考慮到原本的 filesystem 才能成功啊
dump:文件系統(tǒng)備份或單一目錄備份
單一文件系統(tǒng)備份(如/home):dump有l(wèi)evel0--9 9指定等級(jí)備份,。首次備份level0 是完全備份,。而使用level1等級(jí)備份,新備份的數(shù)據(jù)只會(huì)記錄與第一次備份所有差異的檔案,;level2備份與level1所有差異的檔案,,以此類推,。且可以使用-u 將備份時(shí)間記錄到/etc/dumpdates中。
而單一目錄備份:僅能使用level0,,完全備份,,且僅備份該單一目錄下的文件。
簡單使用:
[root@www ~]# dump [-Suvj] [-level] [-f 備份檔] 待備份資料
[root@www ~]# dump -W
-S :僅列出后面的待備份數(shù)據(jù)需要多少磁盤空間才能夠備份完畢
-u :將這次 dump 的時(shí)間記錄到 /etc/dumpdates 檔案中,;
-v :將 dump 的檔案過程顯示出來,;
-j :加入 bzip2 的支持!將數(shù)據(jù)進(jìn)行壓縮,,默認(rèn) bzip2 壓縮等級(jí)為 2
-level:就是我們談到的等級(jí),,從 -0 ~ -9 共十個(gè)等級(jí);
-f :有點(diǎn)類似 tar 啦,!后面接產(chǎn)生的檔案,,亦可接例如 /dev/st0 裝置文件名等
-W :列出在 /etc/fstab 里面的具有 dump設(shè)定的partition 是否有備份過
restore:復(fù)原文件系統(tǒng)
[root@www ~]# restore -t [-f dumpfile] [-h] <==用來察看 dump 檔 [root@www ~]# restore -C [-f dumpfile] [-D 掛載點(diǎn)] <==比較 dump 與實(shí)際檔案 [root@www ~]# restore -i [-f dumpfile] <==進(jìn)入互動(dòng)模式 [root@www ~]# restore -r [-f dumpfile] <==還原整個(gè)文件系統(tǒng)
相關(guān)的各種模式,各種模式無法混用喔,!例如不可以寫 -tC 啦,!
-t :此模式用在察看 dump 起來的備份文件中含有什么重要數(shù)據(jù)!類似 tar -t功能,;
-C :此模式可以將 dump 內(nèi)的數(shù)據(jù)拿出來跟實(shí)際的文件系統(tǒng)做比較,,最終會(huì)列出『在 dump 檔案內(nèi)有記錄的,且目前文件系統(tǒng)不一樣』得檔案,;
-i :進(jìn)入互動(dòng)模式,,可以僅還原部分檔案,用在 dump 目錄時(shí)的還原,!
-r :將整個(gè) filesystem 還原的一種模式,,用在還原針對(duì)文件系統(tǒng)的 dump 備份;
其他較常用到的選頃功能:
-h :察看完整備份數(shù)據(jù)中的inode 與文件系統(tǒng) label 等信息
-f :后面就接你要處理的那個(gè) dump 檔案啰,!
-D :不 -C 進(jìn)行搭配,,可以查出后面接的掛載點(diǎn)與 dump 內(nèi)有不同得檔案!
由亍 dump 是記錄整個(gè)文件系統(tǒng)的,,因此還原時(shí)你也應(yīng)該要給予一個(gè)全新的文件系統(tǒng)才行,。因此需要先建立一個(gè)全新的文件系統(tǒng),然后再還原,。新建文件系統(tǒng),,參照”鳥哥私房菜“ 第八章、 Linux 磁盤不文件系統(tǒng)管理
第十一章 認(rèn)識(shí)與學(xué)習(xí)BASH
shell:簡單來講就是與kernel溝通的接口(能夠操作應(yīng)用程序的接口都能稱為殼程序)
alias:別名
alias lm='ls -al'
注意:= 兩邊均沒有空格哦
alias lm='ls -al'
是取臨時(shí)別名用的,,當(dāng)退出當(dāng)前shell,別名將不起作用,;
永久別名:在~.bashrc 中加入 alias lm='ls -al'這樣每次打開shell終端,均執(zhí)行了臨時(shí)別名命令;
bashrc 和 profile 的區(qū)別:https:///sunteya/understand-bashrc-and-profile/
shell 模式: login shell 和 no-login shell 登錄和不登錄
ineractive shell 和 non-interactive shell 交互和不交互
登錄自動(dòng)運(yùn)行 /etc/profile ~/.profile
交互自動(dòng)運(yùn)行 /etc/bashrc ~/.bashrc
no-login shell : bash 或者 bash -c “CMD” 來啟動(dòng)的 shell
non-interactive shell : bash -c “CMD” 來執(zhí)行的bash.
這兩種模式均不自動(dòng)執(zhí)行上述文件
profile
其實(shí)看名字就能了解大概了, profile 是某個(gè)用戶唯一的用來設(shè)置環(huán)境變量的地方, 因?yàn)橛脩艨梢杂卸鄠€(gè) shell 比如 bash, sh, zsh 之類的, 但像環(huán)境變量這種其實(shí)只需要在統(tǒng)一的一個(gè)地方初始化就可以了, 而這就是 profile.
bashrc
bashrc 也是看名字就知道, 是專門用來給 bash 做初始化的比如用來初始化 bash 的設(shè)置, bash 的代碼補(bǔ)全, bash 的別名, bash 的顏色. 以此類推也就還會(huì)有 shrc, zshrc 這樣的文件存在了, 只是 bash 太常用了而已.
bash 的 login shell 情況下所讀取的整體環(huán)境配置文件其實(shí)只有 /etc/profile,,但是/etc/profile 還會(huì)呼出其他的配置文件如:/etc/inputrc /etc/profile.d/.sh等
Bash shell 的內(nèi)建命令: type
這個(gè) type 也可以用來作為類似 which 找指令用的,!
如:
zhenxiang@ubuntu:~$ type ls ls 是 `ls --color=auto' 的別名 zhenxiang@ubuntu:~$ type cd cd 是 shell 內(nèi)嵌 zhenxiang@ubuntu:~$ type python python 是 /usr/bin/python
bash/shell終端 變量不需要定義 直接使用就好
如:
zhenxiang@ubuntu:~$ echo $myname <== 這里并沒有任何數(shù)據(jù)~因?yàn)檫@個(gè)變量尚未被設(shè)定,!是空的,! zhenxiang@ubuntu:~$ myname=zhenxiang zhenxiang@ubuntu:~$ echo $myname zhenxiang 變量內(nèi)容 可以用“ ”或者‘ ' 但兩者有所不同:
雙引號(hào)的特殊字符如 $ 等,可以保有原本的特性,,如下所示:『 var="lang is $LANG"』則『 echo $var』可得『 lang is en_US』
單引號(hào)內(nèi)的特殊字符則僅為一般字符 (純文本),,如下所示:『 var='lang is $LANG'』則『 echo $var』可得『 lang is $LANG』
可用跳脫字符『\ 』 將特殊符號(hào)(如 [Enter], $, \, 空格符, '等)變成一般字符;
在一串指令中,,還需要藉由其他的指令提供的信息,,可以使用反單引號(hào)『 `指令`』或『 $(指令)』 。特刪注意,,那個(gè) ` 是鍵盤上方的數(shù)字鍵 1 左邊那個(gè)按鍵,,而不是單引號(hào)! 例如想要得核心版本的設(shè)定:『 version=$(uname -r)』再『 echo $version』可得『 2.6.18-128.el5』
如何在bash配置文件中設(shè)置環(huán)境變量,;如在PATH中增加路徑,,在任意shell都能直接有效而不用重新增加PATH路徑,然后再export,;或者是增加一個(gè)myname變量,,在任何新打開的shell均能找到這個(gè)變量;
可在
任一文件中增加:export myname=zhenxiang
之后需要source /etc/profile 重新加載一下該文件否則需要下次才生效
環(huán)境變量查看 env
觀察所有變量(環(huán)境變量與自定義變量) set
PS1環(huán)境變量
這是 PS1 (數(shù)字的 1 不是英文字母l),,這個(gè)東西就是我們的『 命令提示字符』
如:zhenxiang@ubuntu:~$,;可以改變顯示方式噢;
[root@www ~ ]# cd /home [root@www home]# PS1='[\u@\h \w \A #\#]\$ ' [root@www /home 17:02 #85]# # 提示字符變了,!其中,,那個(gè) #85 比較有趣,是下達(dá)指令條數(shù),;
具體PS1設(shè)置參數(shù)可以Google,;
$本身也是一個(gè)環(huán)境變量,是本shell的PID
,?也是一個(gè)環(huán)境變量,,上一個(gè)執(zhí)行指令的回傳值,上一個(gè)指令執(zhí)行正確回傳值0,,錯(cuò)誤回傳值非0
總結(jié):
|
|