gzip是常用的壓縮工具,生成.gz的壓縮檔案,gzip壓縮可以用gunzip解壓。
[linux@ccloves exercises]$ gzip alan\ walker\ -\ fade.***
[linux@ccloves exercises]$ ls
alan walker - fade.***.gz
gzip後面跟上要壓縮的檔案,老陌發現壓縮之後的副檔名是.gz,壓縮之後原始檔沒有了。
解壓檔案用gunzip:
[linux@ccloves exercises]$ gunzip alan\ walker\ -\ fade.***.gz
[linux@ccloves exercises]$ ls -l
total 4236
-rw-r--r-- 1 linux linux 4323034 jul 18 13:41 alan walker - fade.***
gzip命令有一些選項:
-c 將輸出重定向到標準輸出。
-d 解壓檔案
-r 對目錄遞迴,將裡面的檔案分別壓縮
-1... -9 指定壓縮比
老陌測試-c 會把壓縮的資料寫到標準輸出中,你會看到一些亂碼,這是二進位制格式。 壓縮完發現原檔案並沒有刪除,所以我們可以利用這個特點,建立壓縮而保留原始檔。
[linux@ccloves exercises]$ gzip -c alan\ walker\ -\ fade.*** > alan\ walker\ -\ fade.***.gz
[linux@ccloves exercises]$ ls -l
total 8444
-rw-r--r-- 1 linux linux 4323034 jul 18 13:41 alan walker - fade.***
-rw-r--r-- 1 linux linux 4301908 jul 18 13:48 alan walker - fade.***.gz
注意:後面通過重定向運算子 「>」 把重壓縮後的資料流寫到 alan\ walker\ -\ fade.***.gz 檔案中。
gzip -d 解壓縮檔案和 gunzip 壓縮檔案功能一樣。
我們發現gzip不能壓縮目錄,為了做測試,老陌把/etc/目錄複製過來,之後刪除鏈結檔案,之後壓縮:
[linux@ccloves exercises]$ cp -r /etc . 2> /dev/null
[linux@ccloves exercises]$ find . -type l -exec rm {} \;
[linux@ccloves exercises]$ ls
alan walker - fade.*** etc
[linux@ccloves exercises]$ gzip etc
gzip: etc is a directory -- ignored
cp和find命令我們都學過,其中2>這個重定向未接觸過,他是把錯誤資訊重定向到乙個位置,這裡是/dev/null。雖然不能壓縮目錄,但我們可以遞迴壓縮目錄中的檔案:
gzip -r etc
壓縮完之後,你進目錄裡看原始檔都沒有了,全是壓縮後的,所以我們很少用。 如果想解壓 gunzip -r etc 就可以了。
bzip2生成.bz2格式的壓縮檔案,bzip2相對較新,壓縮比更高。用bzip2壓縮可以用bunzip2解壓。
[linux@ccloves exercises]$ bzip2 alan\ walker\ -\ fade.***
[linux@ccloves exercises]$ ls -l
total 4208
-rw-r--r-- 1 linux linux 4296076 jul 18 13:48 alan walker - fade.***.bz2
drwxr-xr-x 134 linux linux 12288 jul 18 13:56 etc
我們發現和gzip一樣,壓縮完之後原檔案沒有了,但好在bzip2也有-c選項,可以把壓縮的資料重定向到其它檔案中,從而保留原始檔。
bzip2不能壓縮目錄,也不能遞迴壓縮。但我們之前學過find,可以查詢之後壓縮,實際上也能夠完成對乙個目錄遞迴壓縮:
find etc -not -type d -exec bzip2 {} \;
linux下還有很多壓縮工具,比如: zip等,還可以安裝windows下常用的rar, unrar命令,但linux下常用的就是bzip2和gzip兩種。
雖然bzip2,gzip不能對目錄壓縮,但可以通過tar命令把目錄樹儲存在乙個檔案中,之後再壓縮。tar命令早期用於把磁碟檔案轉換成乙個檔案進行磁帶備份,tar就是tape archive(磁帶歸檔)的縮寫。
tar命令的常用選項:
下面我們把etc目錄歸檔到乙個檔案中。
[linux@ccloves exercises]$ tar -c -f etc.tar etc
[linux@ccloves exercises]$ ls -l
total 51668
-rw-r--r-- 1 linux linux 4323034 jul 18 13:48 alan walker - fade.***
drwxr-xr-x 134 linux linux 12288 jul 18 14:05 etc
-rw-r--r-- 1 linux linux 48568320 jul 18 14:13 etc.tar
這條命令的意思是對etc目錄進行歸檔,歸檔的檔名是etc.tar,也就是說tar命令生成的副檔名是.tar,其中-f指定歸檔名是etc.tar,這個隨意起。
我們想要看看tar檔案裡的檔案,不用釋放歸檔檔案,用-t就可以檢視歸檔檔案裡的檔案列表。
[linux@ccloves exercises]$ tar -t -f etc.tar
etc/
etc/lightdm/
etc/lightdm/lightdm.conf
etc/lightdm/keys.conf
如果想要釋放檔案檔案,可以用-x選項,這裡要注意釋放歸檔檔案時,會釋放到當前目錄。如果我想釋放到/tmp/etc目錄中,則先要進入這個目錄,之後再釋放:
[linux@ccloves exercises]$ pwd
/home/linux/exercises
[linux@ccloves exercises]$ cd /tmp
[linux@ccloves tmp]$ tar -x -f /home/linux/exercises/etc.tar
[linux@ccloves tmp]$ ls -ld etc
drwxr-xr-x 134 linux linux 4096 jul 18 14:05 etc
還有一種方法用乙個引數 -c dir 或 --directory=dir 指定進入的目錄(作用相當於 cd dir),之後再釋放。 注意這個c是大寫的,如果怕與建立弄混可以記住長命令選項 --directory=dir
tar -xf etc.tar --directory=/tmp
這條命令表示把etc.tar釋放到/tmp目錄中,至於用哪種方式使用者自己喜好 。另外還要注意,比如我想歸檔 /etc/network目錄,我想表達的意思是歸檔network目錄,而不帶etc路徑
[linux@ccloves exercises]$ tar -c -f network.tar /etc/network
[linux@ccloves exercises]$ tar -t -f network.tar
etc/network/
etc/network/inte***ces
etc/network/if-post-down.d/
我們會發現,歸檔裡帶etc目錄,此時我們就先要切換到 /etc/目錄裡,之後再tar就可以了,或用-c來處理。
[linux@ccloves exercises]$ tar -c -f network.tar -c /etc network
[linux@ccloves exercises]$ tar -t -f network.tar
network/
network/inte***ces
network/if-post-down.d/
network/if-post-down.d/**ahi-daemon
我們發現,這回不帶etc路徑了,此時老陌明白-c的含義了。 注意上面的命令 -c /etc 後面有空格,之後是network目錄名,相錄於已經進入到etc目錄了。
當我們把目錄歸檔之後,就變成乙個檔案了,此時可以用gzip, bzip2進行壓縮就可以了。如果想要一步到位,tar命令裡面有-z, -j引數可以直接壓縮。
注意副檔名的命名是:.tar.gz, .tar.bz2
tar -czf etc.tar.gz etc
tar -cjf etc.tar.bz2 etc
linux基礎知識
舉例來說,硬碟的檔名稱即為 dev hd a d 其中,括號內的字母為 a d 當中的任何乙個,亦即由 dev hda,dev hdb,dev hdc,及 dev hdd 這四個檔案的意思 注 這種型式的表示法在後面的章節當中會使用得很頻繁,請特別留意 那麼光碟機與軟盤呢?分別是 dev cdrom...
Linux基礎知識
檔案系統 分割槽和掛載 linux 檔案系統是乙個檔案樹,它的所有檔案和外部裝置都是以檔案的形式掛結在這個檔案樹上,例如 usr local 目錄結構屬於分割槽 linux 下,分割槽屬於目錄結構。預設檔案系統一般為ext3 ext2的公升級版 分割槽包括主分割槽 擴充套件分割槽 邏輯分割槽和swa...
linux基礎知識
軟體環境 centos release 6.5 final 1 如何使vm虛擬機器上的centos連線到外網?1 把vm虛擬機器上的network connection設定為bridge模式 2 把網絡卡eth0配置資訊中的bootproto設定為dhcp 3 win7的cmd中輸入ipconfig...