《鳥哥的linux私房菜 基礎篇》第九章讀書筆記--重點壓縮與解壓

第九章 檔案與文件的壓縮與打包

本章根據需要對後面的備份部分只進行了簡略的閱讀


壓縮與解壓縮
檔案裏有相當多的“空間”存在,並不是完全填滿的,而“壓縮”的技術就是將這些“空間”填滿,讓整個檔案佔用的容量下降。
壓縮比=壓縮前/壓縮後  佔用磁盤空間大小的比

常見的壓縮的擴展名:
*.Z   ---  compress程序壓縮的檔案;(很老)
*.gz  --- gzip
*.bz2  ---  bzip2
*.tar  ---  tar程序打包的數據,並沒有壓縮過
*.tar.gz ---  tar程序打包過的數據,其中並且經過gzip的壓縮
*.tar.bz2 ---  tar程序打包的檔案,其中並且經過bzip2的壓縮

由於這些指令通常僅能這對一個檔案來壓縮與解壓縮,如此一來,每次壓縮與解壓縮都要一大堆檔案,所以打包軟件tar就顯得很重要

compress [-rcv] 檔案或目錄   ---壓縮
umcompress  檔案.Z   ---解壓縮
-r : 可以連同目錄下的檔案也同時給予壓縮
-c :將壓縮數據輸出成爲standard output(輸出到屏幕)
-v : 可以秀出壓縮後的檔案信息以及壓縮過程中 的一些檔名變化
是compress壓縮後源文件消失,變成壓縮後的.Z文件,解壓縮後.Z不存在了,出現解壓後的文檔

compress -c man.config > man.config.back.Z  數據流重定向到.Z文件,兩個都保留
這個compress很少有人用,gzip可以打開.Z的壓縮檔案

gzip [-cdtv#] 檔名  -- 壓縮。壓縮比比compress大
zcat 檔名.gz   --  查看壓縮文件(可讀取純文本文檔被壓縮後的壓縮文件,但並沒有解壓縮)
-c : 將壓縮的數據輸出到屏幕上,可透過數據流重定向來處理
-d : 解壓縮的參數!!
-t : 可以用來檢驗一個壓縮文件的一致性,看看檔案有無錯誤
-v:顯示壓縮比等信息
-#:壓縮等級,-1最快,但是壓縮比最差,-9最慢,但壓縮比最好。預設爲-6

沒用重定向時,壓縮後源文件也不見了。它壓縮成的文件再windows下可以用winRAR軟件來解壓縮

解壓縮還可以用gzip -d **.gz,它與gzip的壓縮相反,.gz不存在了

bzip2 [-cdkzv#] 檔名  -- 壓縮比比gzip好
bzcat 檔名.bz2  --  讀取壓縮後的文檔,但是並沒有解壓
-c:將壓縮的過程產生的數據輸出到屏幕
-d:解壓縮的參數!!!
-k:保留源文件,而不會刪除原始檔案!!
-z:壓縮的參數
-v:可以顯示出原檔案/壓縮文件案的壓縮比等信息
-#:與gzip同樣,都是在計算壓縮比的參數,-9最佳,-1最快
沒有重定向時,壓縮後源文件不見了,可以利用-k參數或者重定向-c  >來進行保留源文件

tar [-j|-z] [cv] [-f 建立的檔名] filename    ----打包或壓縮
tar [-j|-z] [tv] [-f 建立的檔名]                  ----查看檔名
tar [-j|-z] [xv] [-f 建立的檔名] [-C 目錄]   ----解壓縮
-c : 建立打包檔案,可搭配-v來查看過程中被打包的檔名filename;
-t:查看打包檔案的內容含有哪些檔名,重點在查看檔名
-x:解打包或解壓縮的功能,可以搭配-C在特定目錄解開,特別的-c, -t, -x不能同時出現在一串指令中
-j:透過bzip2的支持進行壓縮/解壓縮:此時檔名最好爲*.tar.bz2
-z:透過gzip的支持進行壓縮/解壓縮:此時檔名最好爲*.tar.gz
-v:在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來
-f filename:-f後面要立刻接被處理的檔名
-p:保留備份數據的原本權限與屬性,常用語備份(-c)重要的配置文件
-P:保留絕對路徑,亦即備份數據中含有根目錄存在之意
--exclude=FILE:在壓縮過程中,不要將FILE打包

tar -zpcv -f /root/etc.tar.gz /etc   將目錄/etc進行備份
tar -jpcv -f /root/etc.tar.bz2 /etc  同上,但是壓縮後的文件更小

解壓縮並將數據放到特定的目錄下:(常用命令)
tar -jxv -f /root/etc.tar.bz2 -C /tmp

僅解開單一文件的方法:要打開的文件名爲shadow
1,查找該文件名:tar -jtv -f /root/etc.tar.bz2 |grep 'shadow'  
2,將該文件解開:tar -jxv -f 打包文件.tar.bz2 待解開文件名
                           tar -jxv -f /root/etc.tar.bz2 etc/shadow

打包某目錄,但不包含該目錄下的某些文件:利用--exclude=FILE:
tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.bar.bz2 /etc /root

僅備份比某個時刻還要新的文件
tar -jcv -f /root/etc.newer.than.passwd.tar.bz2 --newer-mtime="2008/09/29" /etc/*

僅用tar進行打包的文件叫做tarfile。還進行了壓縮的支持,叫做tarball

將/home,/root,/etc被分到磁帶機/dev/st0中:tar -cv -f /dev/st0 /home /root /etc


備份工具:dump
除可以備份整個文件系統之外,還可以指定等級。level 0~9
可以備份目錄,且它並非單一的文件系統,但是有限制:所有的備份數據都要在該目錄下;且僅能使用level0即完全備份;不支持-u參數,即無法創建/etc/dumpdates這個level備份的時間記錄文件

備份恢復:restore

光盤寫入工具:
  • 先將所需要備份的數據構建成爲一個鏡像文件(iso),利用mkisofs命令來處理;
  • 將該鏡像文件刻錄至光盤或DVD中,利用cdrecord命令來處理。
mkisofs:新建鏡像文件
cdrecord:光盤刻錄工具。命令

dd:可以直接讀取磁盤設備的內容,然後將這個設備備份成一個文件。
dd if="input file" of="output file" bs="block size" count="number"

將一個分區的內容完整的複製到另一個新建的分區中時,且複製的內容包括啓動扇區的區塊時,cp或者tar這種命令是無法達到需求的,這時就要用dd命令。
在完成新建分區的劃分之後,不需要對其進行格式化,而直接進行扇區表面的賦值:dd if=/dev/hdc1 of=/dev/hdc9
因爲dd可以將原來舊的分區中的扇區表面的數據整個複製過來,連同superblock,boot sector,meta data等全部也會複製過來。

cpio,可以備份任何東西,包括設備文件。但它不會主動去尋找文件來備份,需要配合類似find等可以找到文件名的命令來告知cpio該被本分的數據在哪裏


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章