首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件經過一些壓縮算法變成一個小文件。node
爲何要區分這兩個概念呢?這源於Linux中不少壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),而後再用壓縮程序進行壓縮(gzip bzip2命令)。tar自己不具備壓縮功能。他是調用壓縮功能實現的 linux
tar [必要參數] [選擇參數] [文件] git
必要參數有以下:算法
-A 新增壓縮文件到已存在的壓縮服務器
-B 設置區塊大小測試
-c 創建新的壓縮文件ui
-d 記錄文件的差異spa
-r 添加文件到已經壓縮的文件操作系統
-u 添加改變了和現有的文件到已經存在的壓縮文件code
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-Z 支持compress解壓文件
-v 顯示操做過程
-l 文件系統邊界設置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認壓縮文件的正確性
可選參數以下:
-b 設置區塊數目
-C 切換到指定目錄
-f 指定壓縮文件
--help 顯示幫助信息
--version 顯示版本信息
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是壓縮!)
.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
.bz2
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
.bz
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
壓縮:未知
.tar.bz
解壓:tar jxvf FileName.tar.bz
壓縮:未知
.Z
解壓:uncompress FileName.Z
壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
.rar
解壓:rar x FileName.rar
壓縮:rar a FileName.rar DirName
將文件所有打包成tar包
命令:
tar -cvf log.tar log2012.log 僅打包,不壓縮!
tar -zcvf log.tar.gz log2012.log 打包後,以 gzip 壓縮
tar -jcvf log.tar.bz2 log2012.log 打包後,以 bzip2 壓縮
在參數 f 以後的文件檔名是本身取的,習慣上都用 .tar 來做爲辨識。 若是加 z 參數,則以 .tar.gz 或 .tgz 來表明 gzip 壓縮過的 tar包; 若是加 j 參數,則以 .tar.bz2 來做爲tar包名。
查閱上述 tar包內有哪些文件
命令:tar -ztvf log.tar.gz
只將 /tar 內的 部分文件解壓出來
命令:tar -zcvf log30.tar.gz log2012.log log2013.log
能夠透過 tar -ztvf 來查閱 tar 包內的文件名稱,若是單隻要一個文件,就能夠透過這個方式來解壓部分文件!
文件備份下來,而且保存其權限
命令:tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
說明:這個 -p 的屬性是很重要的,尤爲是當您要保留本來文件的屬性時
在文件夾當中,比某個日期新的文件才備份
命令:tar -N "2012/11/13" -zcvf log17.tar.gz test
備份文件夾內容是排除部分文件
命令:tar --exclude scf/service -zcvf scf.tar.gz scf/*
gzip [參數] [文件或者目錄]
gzip不只能夠用來壓縮大的、較少使用的文件以節省磁盤空間,還能夠和tar命令一塊兒構成Linux操做系統中比較流行的壓縮文件格式。據統計,gzip命令對文本文件有60%~70%的壓縮率。gzip是個使用普遍的壓縮程序,文件經它壓縮事後,其名稱後面會多出".gz"的擴展名。
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把壓縮後的文件輸出到標準輸出設備,不去更動原始文件。
-d或--decompress或----uncompress 解開壓縮文件。
-f或--force 強行壓縮文件。不理會文件名稱或硬鏈接是否存在以及該文件是否爲符號鏈接。
-h或--help 在線幫助。
-l或--list 列出壓縮文件的相關信息。
-L或--license 顯示版本與版權信息。
-n或--no-name 壓縮文件時,不保存原來的文件名稱及時間戳記。
-N或--name 壓縮文件時,保存原來的文件名稱及時間戳記。
-q或--quiet 不顯示警告信息。
-r或--recursive 遞歸處理,將指定目錄下的全部文件及子目錄一併處理。
-S<壓縮字尾字符串>或----suffix<壓縮字尾字符串> 更改壓縮字尾字符串。
-t或--test 測試壓縮文件是否正確無誤。
-v或--verbose 顯示指令執行過程。
-V或--version 顯示版本信息。
-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統缺省值爲6。
把test6目錄下的每一個文件壓縮成.gz文件
命令:gzip *
把每一個壓縮的文件解壓,並列出詳細的信息
命令:gzip -dv *
[root@localhost test6]# ll 總計 604 ---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log ---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log [root@localhost test6]# gzip * [root@localhost test6]# ll 總計 28 ---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz ---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
[root@localhost test6]# ll 總計 28 ---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz ---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz [root@localhost test6]# gzip -dv * linklog.log.gz: 99.6% -- replaced with linklog.log log2012.log.gz: 99.6% -- replaced with log2012.log [root@localhost test6]# ll 總計 604 ---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log ---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log [root@localhost test6]#
詳細顯示每一個壓縮的文件的信息,並不解壓
命令:gzip -l *
[root@localhost test6]# gzip -l * compressed uncompressed ratio uncompressed_name 1341 302108 99.6% linklog.log 1341 302108 99.6% log2012.log 70 61 47.5% log2013.log 2880 604277 99.5% (totals)
壓縮一個tar備份文件,此時壓縮文件的擴展名爲.tar.gz
命令:gzip -r log.tar
遞歸的壓縮目錄
命令:gzip -rv test6
[root@localhost test6]# ll 總計 604 ---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log ---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log [root@localhost test6]# cd .. [root@localhost test]# gzip -rv test6 test6/linklog.log: 99.6% -- replaced with test6/linklog.log.gz test6/log2012.log: 99.6% -- replaced with test6/log2012.log.gz [root@localhost test]# cd test6 [root@localhost test6]# ll 總計 28 ---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz ---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
du [選項] [文件]
Linux du命令也是查看使用空間的,可是與df命令不一樣的是Linux du命令是對文件和目錄磁盤使用的空間的查看,仍是和df命令有一些區別的.
顯示每一個文件和目錄的磁盤使用空間。
-a或-all 顯示目錄中個別文件的大小。
-b或-bytes 顯示目錄或文件大小時,以byte爲單位。
-c或--total 除了顯示個別目錄或文件的大小外,同時也顯示全部目錄或文件的總和。
-k或--kilobytes 以KB(1024bytes)爲單位輸出。
-m或--megabytes 以MB爲單位輸出。
-s或--summarize 僅顯示總計,只列出最後加總的值。
-h或--human-readable 以K,M,G爲單位,提升信息的可讀性。
-x或--one-file-xystem 以一開始處理時的文件系統爲準,若趕上其它不一樣的文件系統目錄則略過。
-L<符號連接>或--dereference<符號連接> 顯示選項中所指定符號連接的源文件大小。
-S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。
--exclude=<目錄或文件> 略過指定的目錄或文件。
-D或--dereference-args 顯示指定符號連接的源文件大小。
-H或--si 與-h參數相同,可是K,M,G是以1000爲換算單位。
-l或--count-links 重複計算硬件連接的文件。
顯示目錄或者文件所佔空間
命令:du
[root@localhost test]# du 608 ./test6 308 ./test4 4 ./scf/lib 4 ./scf/service/deploy/product 4 ./scf/service/deploy/info 12 ./scf/service/deploy 16 ./scf/service 4 ./scf/doc 4 ./scf/bin 32 ./scf 8 ./test3 1288 . [root@localhost test]#
說明:只顯示當前目錄下面的子目錄的目錄大小和當前目錄的總的大小,最下面的1288爲當前目錄的總大小
顯示指定文件所佔空間
命令:du log2012.log
只顯示總和的大小
命令:du -s
按照空間大小排序
命令:du| sort -nr |more
輸出當前目錄下各個子目錄所使用的空間
命令:du -h --max-depth=1
df [選項] [文件]
linux中df命令的功能是用來檢查linux服務器的文件系統的磁盤空間佔用狀況。能夠利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。
顯示指定磁盤文件的可用空間。若是沒有文件名被指定,則全部當前被掛載的文件系統的可用空間將被顯示。默認狀況下,磁盤空間將以 1KB 爲單位進行顯示,除非環境變量 POSIXLY_CORRECT 被指定,那樣將以512字節爲單位進行顯示
必要參數:
-a 所有文件系統列表
-h 方便閱讀方式顯示
-H 等於「-h」,可是計算式,1K=1000,而不是1K=1024
-i 顯示inode信息
-k 區塊爲1024字節
-l 只顯示本地文件系統
-m 區塊爲1048576字節
--no-sync 忽略 sync 命令
-P 輸出格式爲POSIX
--sync 在取得磁盤信息前,先執行sync命令
-T 文件系統類型
選擇參數:
--block-size=<區塊大小> 指定區塊大小
-t<文件系統類型> 只顯示選定文件系統的磁盤信息
-x<文件系統類型> 不顯示選定文件系統的磁盤信息
--help 顯示幫助信息
--version 顯示版本信息
顯示磁盤使用狀況
命令:df
➜ ConfigCenter git:(develop) df Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on /dev/disk1 487849984 427378800 59959184 88% 53486348 7494898 88% / devfs 652 652 0 100% 1128 0 100% /dev map -hosts 0 0 0 100% 0 0 100% /net map auto_home 0 0 0 100% 0 0 100% /home
說明:
Filesystem是表明文件系統對應的設備文件的路徑名(通常是硬盤上的分區);
blocks給出分區包含的數據塊(1024字節)的數目;
used,available分別表示已用的和可用的數據塊數目。用戶也許會感到奇怪的是,第3,4列塊數之和不等於第2列中的塊數。這是由於缺省的每一個分區都留了少許空間供系統管理員使用。即便遇到普通用戶空間已滿的狀況,管理員仍能登陸和留有解決問題所需的工做空間。
iuse,ifree分別表示已用和可用的inode。
iused%,capacity列表示普通用戶空間使用的百分比,即便這一數字達到100%,分區仍然留有系統管理員使用的空間。
Mounted on列表示文件系統的掛載點。
顯示指定類型磁盤
命令:df -t ext3