2021-05-12 14:32:11
Linux教學之檔案歸檔和壓縮(tar、file、zip)
本文主要從以下幾個方便來說明檔案的歸檔和壓縮,同時比較幾種不同壓縮方法的壓縮比率及特點。
- 檔案歸檔命令tar,tar.gz原始碼包的安裝管理
- 建立tar包-解壓-查詢tar包內容
- zip命令的用法
為什麼要壓縮?
1. 方便使用、查詢、閱讀
2. 易於管理 (批次刪除檔案)
如圖:主機A要跟主機B傳輸一個大小為10G的檔案估計傳送100s.
如果直接傳輸會大量的占用流量頻寬.導致公司的內網存取速度緩慢.
傳輸前壓縮-->傳輸後解壓
我把10G的檔案壓縮成5G,傳送時間是50s.
檔案壓縮的好處:
- 節約硬碟的資源.
- 加快檔案傳輸的速率.
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 倍。
相關文章