1. 程式人生 > >Linux系統管理----存儲管理(三)

Linux系統管理----存儲管理(三)

網絡 運維

Linux系統中常用的壓縮和解壓縮工具:
壓縮:以時間換空間的一種操作;
壓縮的實現:標記 + 替換
壓縮比:某個文件在壓縮操作之前與壓縮操作之後的文件大小的比值;(比值越大,壓縮結果越小)
通常來說,純文本文件的壓縮比比較大;

Linux中常用的壓縮工具:
compress/uncompress (比較粗糙,壓縮比較小)
會在文件名的後面增加.Z的後綴名稱;(xxx.Z)
gzip/gunzip
會在文件名的後面增加.gz的後綴名稱;(xxx.gz)
bzip2/bunzip2
會在文件名的後面增加.bz2的後綴名稱;(xxx.bz2)
xz/unxz (目前較優秀的壓縮工具)
會在文件名後面增加.xz的後綴名稱;(xxx.xz)
zip/unzip
會在壓縮包名後增加.zip的後綴名稱;(xxx.zip)
註意:保留原文件,並額外制造出一個壓縮包文件;


gzip工具
gzip, gunzip, zcat - 壓縮、解壓、在壓縮狀態下查看文本內容
常用選項:
-d:解壓縮,相當於gunzip;
-#:指定壓縮時使用的壓縮比,有效範圍:1-9;--fast = -1 ,--best = -9 ;默認為 -6;
-c:將壓縮結果輸出到標準輸出,但不對原文件進行壓縮處理;

bzip2工具
bzip2, bunzip2 - 一種塊排序文件壓縮軟件
bzcat - 將文件解壓縮至標準輸出
bzip2recover - 恢復損壞的 bzip2 文件
常用選項:
-k:不刪除原文件
-d:解壓縮
-c:將壓縮結果輸出到標準輸出,但不對原文件進行壓縮處理;
-#:指定壓縮時使用的壓縮比,有效範圍:1-9;--fast = -1 ,--best = -9 ;默認為 -9;

xz工具 --較優秀的壓縮工具 (壓縮比較高會過度消耗CPU)
xz, unxz, xzcat,壓縮、解壓、在壓縮狀態下查看文本內容
常用選項:
-d:解壓縮
-k:不刪除原文件
-#:指定壓縮時使用的壓縮比,有效範圍:0-9,默認為-6;
-c:將壓縮結果輸出到標準輸出,但不對原文件進行壓縮處理;

zip工具
zip - package and compress (archive) files
格式:
zip [options] [zip‐file [file ...]]
常用選項:
-P:壓縮並設置密碼

unzip -l :查看壓縮包中的文件列表;


tar命令:歸檔

選項:
主選項:
-c:創建檔案文件
-r:向一個已經存在的檔案文件的末尾添加新的文件;
-t:列表顯示一個檔案的內容;
-u:僅向檔案文件的末尾追加內容比檔案文件中的內容更新的文件;
-x:從檔案中獲取文件,釋放文件;
輔助選項:
-f:使用檔案文件時用於指明檔案文件名稱的選項;
-C:在釋放檔案中的文件時,不是釋放至當前目錄,而是指定一個額外的路徑存放被釋放出的文件;
-j:主要用於創建檔案文件時,選擇使用bzip2工具壓縮檔案文件;
-J:主要用於創建檔案文件時,選擇使用xz工具壓縮檔案文件;
-z:主要用於創建檔案文件時,選擇使用gzip工具壓縮檔案文件;
-Z:主要用於創建檔案文件時,選擇使用compress工具壓縮檔案文件;
-k:在釋放檔案中的文件時,如果目標位置有與檔案中同名的文件,則此類文件不釋放;保證文件系用中的文件不會被檔案中的同名文件覆蓋;
-v:顯示詳細過程;
--exclude=PATTERN:在釋放檔案中的文件時被PATTERN匹配到的文件將不被釋放;

(在使用tar命令時,其後面的主選項可不是用 - )

cpio命令-----
copy files to and from archives



寫一個腳本:提示用戶輸入一些文件的路徑,並讓用戶選擇壓縮方式,根據用戶需求對選定的文件進行歸檔壓縮;如果用戶沒選擇壓縮方式則僅歸檔不壓縮;




兩種特殊文件:
1.設備文件 (mknod命令可創建設備文件)
其元數據中原本用來保存數據庫塊指針的位置,存放的是設備號信息;
2.符號連接文件
其元數據中原本用來保存數據塊指針的位置,存放的是另一個文件的訪問路徑;

鏈接文件:
鏈接:將文件的元數據部分和數據部分關聯起來的過程;
訪問一個文件的路徑
硬鏈接:在inode中的數據塊指針指向的數據塊的鏈接,稱為硬鏈接;可也以解釋為同一個數據塊內容的不同數據塊指針;
一個文件的數據內容可以被多個元數據所向,因此可以有多個硬鏈接;表現為這個文件的數據可以使用不同的路徑進行訪問;

硬鏈接特點:
1.不能跨文件系統建立硬鏈接;
2.不能對目錄建立硬鏈接;
3.每次對目標文件建立硬鏈接,其鏈接計數會自動增加inode引用計數;

符號鏈接(軟鏈接):
獨立的文件
用於存儲被鏈接文件的訪問路徑信息的文件;
符號鏈接特點:
1.可以跨文件系統建立符號鏈接
2.目錄也可以創建符號鏈接
3.通過符號鏈接查找到被鏈接文件的數據內容,過程變得更繁瑣;因為需要查找兩組路徑信息;


ln命令
在文件之間建立連接
格式:
ln [opition] ...[-T] target link-name
常用選項:
-s:創建符號鏈接,如果不加此選項即創建硬鏈接;
-v:顯示鏈接建立過程

應用程序發布的版本管理:
將不同版本的應用程序分別存放於不同的目錄中,通過符號鏈接鏈接至某個版本的應用程序目錄;如果新版應用程序出現問題,只需將符號鏈接文件鏈接至以前的某個穩定版本即可實現應用程序回滾;


vim末行模式中的替換和查找:
/或?進行模式查找;
末行命令中的s命令,是進行替換的命令;s是先查找再根據模式進行替換;
:[address]s/PATTERN/STRING/CONTROL
[address] : 地址定界符
1.如果省略則表示光標所在行;
2.# 該數字所代表的行號
3.$ 表示當前文檔的最後一行;$-1,$-2...倒數第二、三行;
4.m,n 從第幾行到第幾行;
5.m,+n 從第m行開始後n行;
6./PATTERN/ 被模式匹配到的行
7./PATTERN1/,/PATTERN2/ 從被模式1匹配到的行開始到被模式2匹配到的行結束;
8.% 所有行;
PATTERN:要進行替換的內容必須被PATTERN匹配;
STRING: 純字符串,不識別正則表達式的元字符;(替換成什麽)
CONTROL:
g:當前行內所有匹配的字符全部替換;
c:手動控制替換操作;


sed命令
sed:stream editor,流編輯器
行編輯操作工具;
sed在實施文本文件處理時,是以行為單位一個或多個文件進行編輯處理;每次sed會處理給定的文件中的一行內容;

sed在處理文本文件時,將正在處理的當前行存儲到臨時的內存緩存區中,稱為 模式空間 ;所謂的模式空間是sed命令的主要工作車間;對於緩存的行,使用給定的PATTERN去匹配,如果匹配成功,則使用相應的command進行編輯處理,如果匹配不成功則直接發往標準輸出;繼續處理下一行直到文檔結束;

默認情況下,sed所處理的文件的內容都是在內存中完成的,並不會影響磁盤上存放的文件的內容;

sed默認有循環遍歷的含義;可以使用sed簡化文件的循環遍歷操作;

---stream editor for filtering and transforming text
格式:
sed [OPTION]... 'script‘[inputfile][input-file]...
常用選項:
-n:對於不能被PATTERN匹配的行不發送到標準輸出;
-e script, --expression=script:多條件編輯;
-f script-file, --file=script-file:從指定的文件中讀取腳本內容在編輯;
註意:script-file最好使用絕對路徑指定;
-i[SUFFIX], --in-place[=SUFFIX]:直接修改原文件內容;
-r:可以使sed支持擴展正則表達式;

script:AddressCommand (地址定界+命令)
Address:地址定界
1.空地址:表示指定文件的所有行;
2.單地址:sed對能夠匹配該地址的唯一一行進行處理;
#:表示指定行號
/PATTERN/:可以被模式匹配到的所有行
$:表示指定文件的最後一行;不支持$-1
3.地址範圍:
m,n:m行到n行;(包括m,n行)
m~n:從m行開始,以n為步長,所經過的所有行;(eg:1~2表示第1,3,5,7...行)
m,+n:從第m行開始後n行;(包括m行)
m,~n:從m行開始,向後查找m*n行;(包括m行)
4./PATTERN1/,/PATTERN2/:
從被PATTERN1第一次匹配的行開始,到被PATTERN2第一次匹配的行結束;後繼續匹配是否有被PATTERN1匹配PATTERN2結束的行;

Command:命令
1.=:顯示被PATTERN所匹配的行的行號;
2.a \test :在被模式匹配的行之後追加test內容;支持“\n”換行,從而實現追加多行信息;
3.i \test :在被模式匹配的行之前插入test內容;支持“\n”換行,從而實現追加多行信息;
4.c \test :將被模式匹配到的內容修改為test內容,支持“\n”換行,從而實現修改原內容為多行信息;
5.d :在模式空間中刪除被匹配到的行;(不顯示被匹配到的行)
註意:一般在使用d命令時,不建議使用-n選項;否則將沒有結果;
6.p: 將模式空間中被模式匹配的行輸出到標準輸出;
註意:一般在使用p命令是建議使用-n選項;
7.w filename:filename為一個路徑;w命令將模式空間中被模式匹配的行存儲到指定的文件當中;(相當於另存為)
註意:一般在使用w命令是建議使用-n選項;
8.r filename:filename為一個路徑;r命令可以將指定的文件內容添加至被PATTERN匹配的行後面;

!Command:在模式空間中被PATTERN匹配的行不執行指定的命令;相反,沒有被PATTERN匹配的行會執行Command;

s///:查找並替換,分隔符可以更換任意符號,但必須保持一致;
s/regexp/replacement/[control]
regexp:正則表達式,也就是PATTERN,計劃查找並替換的內容就是能夠被regexp匹配的內容;
replacement:要替換的結果,純字符串;支持後向引用( s/\(string\)/$/ )| ( s/\(string\)/\1/ )

高級編輯命令:
h:將模式空間中的內容存儲到保持空間中,並覆蓋保持空間中原有內容;
H:將模式空間中的內容存儲到保持空間中,並追加至保持空間中原有內容之後;
g:從保持空間中取出數據存儲到模式空間中,並覆蓋模式空間中原有內容;
G:從保持空間中取出數據存儲到模式空間中,並追加至模式空間中原有內容之後;
x:交換保持空間與模式空間中的內容;
n:讀取被PATTERN匹配的行的下一行,並覆蓋到模式空間;
N:讀取被PATTERN匹配的行的下一行,並追加到模式空間;
D:刪除模式空間中的所有行;

Linux系統管理----存儲管理(三)