首頁 > 軟體

Linux教學之檔案歸檔和壓縮(tar、file、zip)

2020-06-16 17:11:16

本文主要從以下幾個方便來說明檔案的歸檔和壓縮,同時比較幾種不同壓縮方法的壓縮比率及特點。

  • 檔案歸檔命令tar,tar.gz原始碼包的安裝管理
  • 建立tar包-解壓-查詢tar包內容
  • zip命令的用法

     為什麼要壓縮?

     1.    方便使用、查詢、閱讀

     2.    易於管理 (批次刪除檔案)

如圖:主機A要跟主機B傳輸一個大小為10G的檔案估計傳送100s.

 

如果直接傳輸會大量的占用流量頻寬.導致公司的內網存取速度緩慢.

傳輸前壓縮-->傳輸後解壓

我把10G的檔案壓縮成5G,傳送時間是50s.

檔案壓縮的好處:

  1. 節約硬碟的資源.
  2. 加快檔案傳輸的速率.

1.檔案歸檔命令

1.1. tar命令的使用

 tar 檔案.是把幾個檔案和(或)目錄集合在一個資料夾裡。是建立備份和歸檔的最佳工具

作用:打包、壓縮檔案

[root@linuxidc ~]# tar --help

Usage: tar [OPTION...] [FILE]...

GNU `tar' saves many files together into a single tape or disk archive, and can

restore individual files from the archive.

 

Examples:

  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.  建立存檔

  tar -tvf archive.tar        # List all files in archive.tar verbosely.列出所有檔案

  tar -xf archive.tar          # Extract all files from archive.tar. 從archive.tar提取所有檔案

tar 選項 包的名稱  目標檔案/目錄

[root@linuxidc ~]# tar  cvf aa.tar a.out who.out  touch.txt  #歸檔

# c  create 建立

#v  詳細

#f  filename

 

[root@linuxidc ~]# tar tvf  aa.tar   #檢視包裡的檔案

[root@linuxidc ~]# tar xf aa.tar #解包

1.2 file命令

linux對於檔案的擴充套件名沒有像windows要求的那麼嚴格,所以在使用linux的過程中經常會遇到有些檔案根本就沒有擴充套件名,哪麼我們應該如何去判斷沒有擴充套件名的檔案,到底是檔案還是目錄呢?

作用:確定檔案型別

語法:file  檔名

[root@linuxidc ~]# touch a.txt
[root@linuxidc ~]# file a.txt
a.txt: empty
[root@linuxidc ~]# file /etc/passwd
/etc/passwd: ASCII text
[root@linuxidc ~]# file /home/berners
/home/berners: directory
[root@linuxidc ~]# file /etc/init.d/network
/etc/init.d/network: Bourne-Again shell script, ASCII text executable
[root@linuxidc ~]#

 

例:把兩個目錄或目標+檔案打包成一個軟體包

[root@linuxidc ~]# tar cvf bb.tar /boot/  /etc/passwd

1.3 不解包,檢視tar中的內容:

[root@linuxidc ~]# tar tvf bb.tar

操作-解包:

[root@localhost ~]# tar xvf bb.tar  #將bb.tar 解壓

注意: 解包過程中如果不指定解包路徑,那麼會按照原路徑解包,會覆蓋原檔案,這一點要特別小心,尤其是原路徑下的檔案在打包後修改過。

操作-解壓指定路徑:

-C #指定解壓的路徑位置

[root@linuxidc ~]# tar xvf aa.tar -C /home/berners/  #將bb.tar 解壓到/home/berners目錄下

[root@linuxidc ~]# ls
aa.tar    Documents    kernel.txt    Pictures    Templates
anaconda-ks.cfg   Downloads    Music    Public    Videos
Desktop    initial-setup-ks.cfg    passwd.txt    RedHat.txt    who.out
[root@linuxidc ~]# tar xf aa.tar -C /home/berners
[root@linuxidc ~]# ls /home/berners
a.out touch.txt who.out
[root@linuxidc ~]#

操作-對比檔案的大小:

[root@linuxidc ~]# du -sh aa.tar
20K aa.tar
[root@linuxidc ~]# ll -h /home/berners/aa.tar
-rw-r--r-- 1 root root 20K 8月 14 11:22 /home/berners/aa.tar
[root@linuxidc ~]#  

2. tar  歸檔 + 壓縮

gzip  bzip2  zip tar

一、壓縮格式:gz, bz2, xz, zip, Z

格式(檔名格式): .tar.gz  或  .tgz

語法格式:tar  zcvf  newfile.tar.gz  SOURCE

root@xuegod61 ~]# tar zcf aa.tar.gz /home/berners/    #壓縮

2.1 比較tar zcf 壓縮前後檔案的大小。

[root@linuxidc ~]# ll -h aa.tar*

-rw-r--r-- 1 root root 20K 8月 14 10:37 aa.tar   //壓縮前20k。
-rw-r--r-- 1 root root 3.7K 8月 14 12:51 aa.tar.gz //壓縮後3.7k。

用tar zcf壓縮檔案, 壓縮前(20k)/壓縮後(3.7k) = 5.4 倍。

可能你要說我的檔案比較小,那我來弄一個大的檔案比較一下:

[root@linuxidc ~]# du -sh share.tar*
1.2G share.tar
457M share.tar.gz
[root@linuxidc ~]#

 這個檔案比較大,壓縮前和壓縮後比率為 1.2*1024/457 = 2.69 倍。


IT145.com E-mail:sddin#qq.com