壓縮與解壓縮
檔案裏有相當多的“空間”存在,並不是完全填滿的,而“壓縮”的技術就是將這些“空間”填滿,讓整個檔案佔用的容量下降。
壓縮比=壓縮前/壓縮後 佔用磁盤空間大小的比
常見的壓縮的擴展名:
*.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該被本分的數據在哪裏