linux基礎知識 17

2022-09-15 10:48:14 字數 4630 閱讀 6542

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...