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