天天看點

深度剖析Linux檔案備份壓縮指令—企業實戰

作者:滌生大資料
深度剖析Linux檔案備份壓縮指令—企業實戰

寫在前面:

大家都知道,在Windows電腦中壓縮檔案檔案大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸檔案 時,可以減少傳輸的時間。。 在 Linux系統中同樣支援這種操作,而且不同的壓縮方式,壓縮的效果還不一樣,下面就和大家分享一下我日常工作中維護Linux系統常用的一些壓縮指令。

一、Linux中常用的壓縮檔案拓展名

工作中常用壓縮檔案拓展名

檔案拓展名類型 拓展名簡述

  • *.gz gzip程式壓縮的檔案:僅壓縮普通檔案
  • *.bz2 bzip2程式壓縮的檔案:僅壓縮普通檔案
  • *.tar tar程式打包的資料,并沒有經過壓縮
  • *.tar.gz tar程式打包的檔案,其中經過gzip的壓縮
  • *.tar.bz2 tar程式打包的檔案,其中經過bzip2的壓縮 *.zip zip壓縮檔案

二、常用壓縮指令詳解

2.1gzip 壓縮和解壓檔案

gzip是在Linux系統中經常使用的一個對檔案進行壓縮和解壓縮的指令,既友善又好用。gzip不僅可以用來壓縮大的、較少使用的檔案以節省磁盤空間,還可以和tar指令一起構成Linux作業系統中比較流行的壓縮檔案格式。據統計,gzip指令對文本檔案有60%~70%的壓縮率。

使用文法:

gzip [選項] 壓縮(解壓縮)的檔案名

參數詳解:

-c 将輸出寫到标準輸出上,并保留原有檔案。

-d 将壓縮檔案解壓。

-l 對每個壓縮檔案,顯示下列字段:

第一列:壓縮檔案的大小 第二列:未壓縮檔案的大小

第三列:壓縮比 第四列:未壓縮檔案的名字

-r 遞歸式地查找指定目錄并壓縮其中的所有檔案或者是解壓縮。

-t 測試,檢查壓縮檔案是否完整。

-v 對每一個壓縮和解壓的檔案,顯示檔案名和壓縮比。

-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為 6。

常用操作示例:

A. 壓縮A指定目錄下的所有檔案

在 目錄/gzip 下有檔案 1.txt 2.txt 3.txt,全部壓縮成.gz檔案。

[root@10-6-161-230-Mob gzip]# cd /gzip/   
[root@10-6-161-230-Mob gzip]# gzip *
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root  362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root  722 Sep 16 16:34 2.txt.gz
-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz           

B. 解壓指定檔案下的所有壓縮檔案

解壓/gzip目錄下的每個壓縮檔案

[root@10-6-161-230-Mob gzip]# cd /gzip/
[root@10-6-161-230-Mob gzip]# gzip -dv *
1.txt.gz:        66.5% -- replaced with 1.txt
2.txt.gz:        53.8% -- replaced with 2.txt
3.txt.gz:        53.4% -- replaced with 3.txt
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root  984 Sep 16 16:33 1.txt
-rw-r--r-- 1 root root 1492 Sep 16 16:34 2.txt
-rw-r--r-- 1 root root 3092 Sep 16 16:34 3.txt           

C. 檢視所有已經壓縮檔案的壓縮詳情,不會解壓檔案

[root@10-6-161-230-Mob gzip]# cd /gzip/
[root@10-6-161-230-Mob gzip]# gzip -l *
         compressed        uncompressed  ratio uncompressed_name
                362                 984  66.5% 1.txt
                722                1492  53.8% 2.txt
               1472                3092  53.4% 3.txt
               2556                5568  54.7% (totals)           

内容詳解:

第一列:壓縮檔案的大小

第二列:未壓縮檔案的大小

第三列:壓縮比

第四列:未壓縮檔案的名字

D. 壓縮一個tar備份檔案,此時壓縮檔案的擴充名為.tar.gz

[root@localhost test]# ls -al log.tar
-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
[root@localhost test]# gzip -r log.tar
[root@localhost test]# ls -al log.tar.gz 
-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz           

E. 遞歸的壓縮目錄

遞歸的壓縮/gzip目錄

[root@10-6-161-230-Mob ~]# gzip -rv /gzip/
/gzip//2.txt:    53.8% -- replaced with /gzip//2.txt.gz
/gzip//3.txt:    53.4% -- replaced with /gzip//3.txt.gz
/gzip//1.txt:    66.5% -- replaced with /gzip//1.txt.gz
[root@10-6-161-230-Mob ~]# cd /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root  362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root  722 Sep 16 16:34 2.txt.gz
-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz           

詳解:

遞歸壓縮的操作,因為是對目錄操作,是以需要加上-r選項,這樣也可以對子目錄進行遞歸的。而且對原目錄沒有影響,隻是目錄裡面的檔案相應變成了.gz.這就是壓縮

F. 遞歸解壓指定目錄【/gzip】的檔案

[root@10-6-161-230-Mob ~]# cd /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root  362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root  722 Sep 16 16:34 2.txt.gz
-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz
[root@10-6-161-230-Mob gzip]# gzip -dr /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root  984 Sep 16 16:33 1.txt
-rw-r--r-- 1 root root 1492 Sep 16 16:34 2.txt
-rw-r--r-- 1 root root 3092 Sep 16 16:34 3.txt           

G. gunzip指令詳解

Linux gunzip 指令用于解壓檔案。

gunzip 是個使用廣泛的解壓縮程式,它用于解開被 gzip 壓縮過的檔案,這些壓縮檔案預設最後的擴充名為 .gz。事實上 gunzip 就是 gzip 的硬連接配接,是以不論是壓縮或解壓縮,都可通過 gzip 指令單獨完成。

比如下面的示例:

[root@test ~]#gzip –d /test/test.testzip.gz 
                                   ## 等價于執行
[root@test ~]#gunzip /test/test.zip.gz           

2.2 tar--打包和備份的歸檔工具

--将多個零散的檔案歸檔為一個單獨的檔案,并且能從歸檔中還原檔案。

重要說明:工作中很常用

首先要弄清兩個概念:打包和壓縮。打包是指将一大堆檔案或目錄變成一個總的檔案;壓縮則是将一個大的檔案通過一些壓縮算法變成一個小檔案。

為什麼要區分這兩個概念呢?這源于Linux中很多壓縮程式隻能針對一個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你得先将這一大堆檔案先打成一個包(tar指令),然後再用壓縮程式進行壓縮(gzip bzip2指令)。

文法

tar [選項...] [FILE]...           

選項

-A, --catenate, --concatenate   追加 tar 檔案至歸檔
-c, --create               建立一個新歸檔
-d, --diff, --compare      找出歸檔和檔案系統的差異
    --delete               從歸檔(非錄音帶!)中删除
-r, --append               追加檔案至歸檔結尾
-t, --list                 列出歸檔内容
    --test-label           測試歸檔卷标并退出
-u, --update               僅追加比歸檔中副本更新的檔案
-x, --extract, --get       從歸檔中解出檔案
- z:有gzip屬性的
- j:有bz2屬性的
- Z:有compress屬性的
- v:顯示所有過程
- O:将檔案解開到标準輸出           

操作示例:

A. 打包目錄下所有.txt結尾的檔案

參考指令:tar -cf all.tar *.txt
深度剖析Linux檔案備份壓縮指令—企業實戰

B. 解壓檔案到目前目錄

參考指令:tar -xvf all.tar
深度剖析Linux檔案備份壓縮指令—企業實戰

C. 解壓檔案到指定目錄

參考指令:tar -xvf all.tar -C /test2/

注意:核心參數是 -C(大寫)

深度剖析Linux檔案備份壓縮指令—企業實戰

D. 打包并壓縮【工作中很常用】

tar可在打包時直接壓縮,支援gzip壓縮、bzip2壓縮和xz壓縮。

使用-z選項可壓縮成gzip格式的檔案

參考指令:tar -zcvf test.tar.gz /test2/
深度剖析Linux檔案備份壓縮指令—企業實戰

F. -zx選項,解壓.tar.gz格式的壓縮包

參考指令:

tar -xvzf test.tar.gz #j解壓到目前目錄

tar -xvzf test.tar.gz -C /test4 #解壓到指定目錄

深度剖析Linux檔案備份壓縮指令—企業實戰

2.3 Linux zip 指令用于壓縮檔案。

說明:zip 是個使用廣泛的壓縮程式,壓縮後的檔案字尾名為 .zip。

文法:

zip [選項] 壓縮包名 源檔案或源目錄清單
常用參數:           

-c:将解壓縮的結果

-l:顯示壓縮檔案内所包含的檔案

-p:與-c參數類似,會将解壓縮的結果顯示到螢幕上,但不會執行任何的轉換

-t:檢查壓縮檔案是否正确

-u:與-f參數類似,但是除了更新現有的檔案外,也會将壓縮檔案中的其它檔案解壓縮到目錄中

-v:執行是時顯示詳細的資訊

操作示例:

A. 将 /test/test/ 這個目錄下所有檔案和檔案夾打包為目前目錄下的 test.zip:

[root@10-6-161-230-Mob gzip]# zip -q -r test.zip /test/test           

B. 如果在我們在 /test/test 目錄下,可以執行以下指令:

[root@10-6-161-230-Mob gzip]# zip -q -r test.zip *           

C. 從壓縮檔案 cp.zip 中删除檔案 a.test

[root@10-6-161-230-Mob gzip]# zip -dv test.zip a.test           

2.3 Linux unzip 指令用于解壓檔案

說明:

Linux unzip指令用于解壓縮zip檔案,unzip為.zip壓縮檔案的解壓縮程式。

常用參數:

-l 顯示壓縮檔案内所包含的檔案。

-v 執行是時顯示詳細的資訊。

-n 解壓縮時不要覆寫原有的檔案。

-o 不必先詢問使用者,unzip執行後覆寫原有檔案。

常用操作示例:

A. 在目前目錄解壓:text.zip

[root@10-6-161-230-Mob gzip]# unzip test.zip           

B. 解壓到指定的目錄:【- d + 目錄路徑】

[root@10-6-161-230-Mob gzip]# unzip -d /temp test.zip           

C. 解壓的時候,不覆寫已經存在的同名檔案,加上-n參數

[root@10-6-161-230-Mob gzip]# unzip -n -d /temp test.zip           

D. 覆寫原先的檔案

[root@10-6-161-230-Mob gzip]# unzip -o test.zip -d /tmp/           

E. 隻看一下zip壓縮包中包含哪些檔案,不解壓縮

[root@10-6-161-230-Mob gzip]# unzip -l test.zip           

F. 檢視顯示的檔案清單還包含壓縮比率

[root@10-6-161-230-Mob gzip]# unzip -v test.zip           

三、檔案的傳輸

3.1 本地檔案拷貝【cp】

文法:

cp [options] source dest 或者 cp [options] source... directory

常用參數詳解:

-r:若給出的源檔案是一個目錄檔案,此時将複制該目錄下所有的子目錄和檔案。

操作示例:

使用指令 cp 将目前目錄 test/ 下的所有檔案複制到新目錄 newtest 下,輸入如下指令:

[root@10-6-161-230-Mob gzip]# cp –r test/ newtest            

3.2 遠端檔案複制【scp】

說明:

Linux scp 指令用于 Linux 之間複制檔案和目錄。

scp 是 secure copy 的縮寫, scp 是 linux 系統下基于 ssh 登陸進行安全的遠端檔案拷貝指令。

文法簡寫:

scp [可選參數] file_source file_target

常用參數詳解:

-r: 遞歸複制整個目錄。 -P port:注意是大寫的P, port是指定資料傳輸用到的端口号

指令格式詳細:

[root@10-6-161-230-Mob gzip]# scp 本地檔案 遠端使用者名@遠端ip:遠端路徑 
或者 
[root@10-6-161-230-Mob gzip]# scp 本地檔案 遠端使用者名@遠端ip:遠端檔案
或者 
[root@10-6-161-230-Mob gzip]# scp 本地檔案 遠端ip:遠端路徑
或者 
[root@10-6-161-230-Mob gzip]# scp 本地檔案 遠端ip:遠端路徑           

遞歸目錄複制:

[root@10-6-161-230-Mob gzip]#scp -r 本地目錄 遠端使用者名@遠端ip:遠端目錄
或者 
[root@10-6-161-230-Mob gzip]#scp -r 本地目錄 遠端ip:遠端目錄           

指定端口号複制:

#scp 指令使用端口号 57522
[root@10-6-161-230-Mob gzip]# scp -P 57522 使用者名@ip:檔案名 遠端路徑           

操作示例展示:

兩台機器IP分别為:A.10.6.161.230,B.10.6.161.231。

1. 在A伺服器上操作,将B伺服器上/home/lk/目錄下所有的檔案全部複制到本地的/root目錄下:

[root@10-6-161-230-Mob gzip]# scp -r root@:10.6.161.230/home/lk    /root           

2.在A伺服器上将/root/lk目錄下所有的檔案傳輸到B的/home/lk/cpfile目錄下

[root@10-6-161-230-Mob gzip]# scp -r /root/lk  [email protected]:/home/lk/cpfile           

3. 在A伺服器上将/root/lk目錄下所有的檔案傳輸到B的/home/lk/cpfile目錄下 使用指定端口57522

[root@10-6-161-230-Mob gzip]# scp -P 57522 -r /root/lk  [email protected]:/home/lk/cpfile           

繼續閱讀