>[success] # 壓縮和解壓
~~~
1.最早的linux 備份介質是磁帶,使用的命令是tar
2.一般需要先打包后的磁帶文件進行壓縮儲存,壓縮名利是gzip 和 bzip2,當然也可以直接使用tar
3.常用的擴展名是'.tar.gz','tar.baz2' ,'.tgz'
~~~
>[danger] ##### 知道壓縮之前要了解的
~~~
1.壓縮指令有 'tar' ,'gzip','zip',其中'zip' 需要自己安裝,這三種壓縮的各自特點
1.1.'zip' 可以壓縮文件或者文件目錄,本質是壓縮文件或目錄,是一種壓縮格式
1.2.'gzip' 壓縮比'zip'的高,采用 LZ77 無損壓縮算法,壓縮后的文件一般使用 .gz 后綴。gzip 不
僅可以用來壓縮大的、較少使用的文件以節省磁盤空間,減少文件大小有兩個明顯的好處,
一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。'問題是',gzip命令
不支持目錄壓縮
1.3.'tar',打包命令,只打包并不壓縮,舉個例子tar 可以把一個文件夾打包成一個文件,沒有壓縮
的功能 之前大小為100 打包后大于等于100,這樣就可以和gzip 配置,gzip 只能打包文件就可以
先tar 在gzip,'tar -czf /tmp/etc-backup.tar.gz /etc' 壓縮成'gz'的格式,加后綴方便使用的人知道
格式
~~~
[參考鏈接](https://cloud.tencent.com/developer/article/1584446?from=article.detail.1376090)
>[info] ## tar
~~~
使用: '語法tar(選項)(參數)'
1.A或-- catenate:新增文件到以存在的備份文件;
2.B:設置區塊大小;
3.c或-- create:建立新的備份文件;
4.C<目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
5.d:記錄文件的差別;
6.x或- extract或--get:從備份文件中還原文件
7.t或--list:列出備份文件的內容
8.z或-gzip或- unzip:通過gzip指令處理備份文件
9.Z或- compress!或- un compress:通過 compress指令處理備份文件
10.f<備份文件>或--file=<備份文件>:指定備份文件
11.v或-- verbose:顯示指令執行過程;
12.r添加文件到已經壓縮的文件u:添加改變了和現有的文件到已經存在的壓縮文件;支持bzip2解壓文件;
13u:添加改變了和現有的文件到已經存在的壓縮文件
14.j:支持bzip2解壓文件;
15.l:文件系統邊界設置
16.k:保留原有文件不覆蓋;
17.m:保留文件不被覆蓋;
18.w:確認壓縮文件的正確性p或--same- permIssIons:用原來的文件權限還原文件
19.P或-- absolute- names:文件名使用絕對名稱,不移除文件名稱前的“/〃號;不建議使用
20.N<日期格式>或-- newer三<日期時間>:只將較指定日期更新的文件保存到備份文件里;
exclude<范本樣式>:排除符合范本樣式的文件。
21.h,-- dereference跟蹤符號鏈接;將它們所指向的文件歸檔并輸出
~~~
>[danger] ##### 打包 -cvf
1. 打包理解成將衣服放到袋子里
2. 一般使用tar 打包后的文件我們最好以 **.tar** 結尾 注意后綴在linux 是無意義的并且也只是一個文件類型
3. 打包命令格式
| 命令 | 英文 |含義|
| --- | --- |--- |
| c | create | 生成檔案文件, 創建打包文件|
| v | verbosely | 報告進度|
| f | file | 指定檔案的文件名稱, f后面一定是 .tar 文件, 所以必須放到最后 |
~~~
# 將 一系列文件 打包成 一個大文件
tar -cvf 打包名.tar 被打包的目錄
tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
~~~
4. 案例
~~~
'tar -cvf all.tar ./' -- 將當前目錄文件打包到 all.tar
~~~
>[danger] ##### 解包-- xvf
1. 衣服從袋子里取出來過程理解成解包
2. 解包命令格式
|命令| 英文 |含義|
| --- | --- |--- |
|x |extract (提取) |解包|
|C (大寫C)|directory (目 錄)|默認保存到當前目錄, 通過 -C 更改解壓目錄, 注意: 解壓目錄必須存在|
~~~
# 將一個打包后的 分解成 一系列小文件, 分解位置為 當前目錄
tar -xvf 打包名.tar
# 將一個打包后的 分解成 一系列小文件, 分解位置為 指定目錄
tar -xvf 打包名.tar -C 解包路徑位置
~~~
3. 案例
~~~
1.例子'tar -xf /tmp/etc-backup.tar -C /root' 將'tmp 下的打包文件,解包到 /root'下,記得解包到哪里用-C,
2.'tar -xf /tmp/etc-backup.tar' 表示將解包的內容放到當前目錄下
~~~
>[danger] ##### 打包壓縮
1. 類衣服放到壓縮袋, 再抽取里面的空氣,在 Linux 中, 最常用的壓縮文件格式是**xxx.tar.gz**在 tar 命令中有一個選項 -z 可以調用 gzip , 從而可以方便的實現壓縮和解壓縮的功能
2. 指令格式
* gz 壓縮
~~~
# 壓縮文件
tar -zcvf 打包壓縮文件名.tar.gz 被壓縮的文件/目錄
# 解壓縮文件
tar -zxvf 打包文件.tar.gz
# 解壓縮到指定路徑
tar -zxvf 打包文件.tar.gz -C 目錄路徑
~~~
* bz 壓縮
~~~
# 壓縮文件
tar -jcvf 打包壓縮文件名.tar.bz2 被壓縮的文件/目錄
# 解壓縮文件
tar -jxvf 打包文件.tar.bz2
# 解壓縮到指定路徑
tar -jxvf 打包文件.tar.bz2 -C 目錄路徑
~~~
3. 常用參數
~~~
1.-z 是壓縮成 gz 壓縮格式
2.-j 是壓縮成 bz2 的壓縮格式
3.例子 :
3.1.'tar -czf /tmp/etc-backup.tar.gz /etc' 壓縮成'gz'的格式,加后綴方便使用的人知道格式
3.2. 'tar -cjf /tmp/etc-backup.tar.bz2 /etc' 壓縮成'bz2'的格式
4.bz2 格式壓縮時間長但是體積小,'gz' 壓縮時間短體積大
注: 上面的指令解釋為把 /ect 下的文件打包并且壓縮到 /tmp/etc-backup.*.*,這里命名方式也是為了告訴
其他人他們是被壓縮了那種格式,并且被tar打包
~~~
>[danger] ##### 列出備份文件的內容 -- t
~~~
1.'tar -tvf all.tar' -- 針對打包文件顯示里面的內容只要'tf' 配合
2.' tar -ztvf all.tar.gz' -- 針對指定壓縮類型需要配置對應的類型參數例如這里配合'ztf'
~~~
>[danger] ##### 解壓縮
~~~
1.tar -xjf all.tar.bz2 #解壓.bz2的文件
2.和壓縮同理有'z'和‘j' 兩種格式。想指定文件目錄就'-C',否則就是當前
~~~
>[danger] ##### 解壓或者解包中單某一條
~~~
1.' tar -zxvf all.tar.gz ./cutTest.txt' -- all.tar.gz 對應解壓的包 ./cutTest.txt 對應包中的文件
~~~
>[danger] ##### 排除某個不解壓
~~~
注意-- exclude跟著文件名或是文件夾,不得加斜杠,排除多個文件,就寫多個-- exclude
tar -zXVf ./alltmp2. tar. gz --exclude data
~~~
>[danger] ##### 總結
1. 需要先打包在壓縮,或者先解壓在解包
~~~
'打包壓縮': tar -jcvf 打包之后的文件名.tar.bz2 被打包壓縮的目錄或文件名
'解包解壓縮': tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
~~~
>[info] ## 其他壓縮命令
~~~
1gzip 和 zip 命令
~~~
>[danger] ##### zip 格式
* 壓縮文件或目錄,是一種壓縮格式
| 功能 | 命令 |
| --- | --- |
| 壓縮文件 | zip 壓縮文件名.zip 源文件 |
| 壓縮目錄 | zip -r 壓縮目錄名.zip 源目錄 |
| 解壓 | unzip 壓縮目錄名.zip |
~~~
yum install -y unzip zip
mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book -- 將book 文件夾 壓縮為book.zip
rm -rf book/ rmdir book
unzip book.zip
~~~
* 常用命令
~~~
unzip test.zip ->將test.zip解壓到當前文件下
unzip -n test.zip -d /tmp ->將test.zip解壓到/tmp目錄下,并且不要覆蓋已有文件
unzip -v test.zip ->查看test.zip內容,但不解壓
unzip -o test.zip -d tmp/ ->將test.zip解壓到/tmp目錄下,并且覆蓋已有文件
~~~
|選項 |描述|
| --- | --- |
|-c |將解壓縮的結果顯示到屏幕上,并對字符做適當的轉換; |
|-f |更新現有的文件; |
|-l |顯示壓縮文件內所包含的文件; |
|-p |與-c參數類似,會將解壓縮的結果顯示到屏幕上,但不會執行任何的轉換; |
|-t | 檢查壓縮文件是否正確; |
|-u |與-f參數類似,但是除了更新現有的文件外,也會將壓縮文件中的其他文件解壓縮到目錄中; |
|-v | 執行時顯示詳細的信息; |
|-z |僅顯示壓縮文件的備注文字; |
|-a | 對文本文件進行必要的字符轉換; |
|-b | 不要對文本文件進行字符轉換; |
|-C | 壓縮文件中的文件名稱區分大小寫; |
|-j | 不處理壓縮文件中原有的目錄路徑; |
|-L |將壓縮文件中的全部文件名改為小寫; |
|-M | 將輸出結果送到more程序處理; |
|-n |解壓縮時不要覆蓋原有的文件; |
|-o |不必先詢問用戶,unzip執行后覆蓋原有的文件; |
|-P |<密碼> 使用zip的密碼選項; |
|-q |執行時不顯示任何信息; |
|-s | 將文件名中的空白字符轉換為底線字符; |
|-V | 保留VMS的文件版本信息; |
|-X | 解壓縮時同時回存文件原來的UID/GID; |
|-d<目錄> | 指定文件解壓縮后所要存儲的目錄; |
|-x<文件> |指定不要處理.zip壓縮文件中的哪些文件; |
|-Z |unzip-Z等于執行zipinfo指令。 |
* 備注解釋關于壓縮文件和目錄
現在有一個下面目錄的結構a文件下有a.txt 和 b文件,b下有b.txt
a
├── a.txt
└── b
└── b.txt
壓縮文件效果是壓縮后的包只有 a b 文件夾 并不存在 a.txt b.txt 這類非文件夾
壓縮目錄是所有內容都會存在
>[danger] ##### gzip
* gzip為高壓,可以把文件壓縮得更小
* gzip命令不支持目錄
| 命令 | 示例 | 含義 |
| --- | --- | --- |
| gzip 源文件 | gzip book.txt | 壓縮為.gz格式的壓縮文件,源文件會消失 |
| gzip -c 源文件 > 壓縮文件 | gzip -c book.txt > book.txt.gz | 壓縮為.gz格式的壓縮文件,源文件不會消失 |
| gzip -r 目錄 | gzip -r book | 把目錄下的每個子文件都變成壓縮包,并刪除原文件,當前目錄無變化 |
| gzip -d 壓縮文件名 | gzip -d 1.txt.gz | 解壓縮文件,不保留壓縮包 |
| gunzip 壓縮文件 | gunzip 2.txt.gz | 解壓縮文件,也不保留壓縮包 |
* 壓縮是壓縮目錄下的文件
~~~
touch book.txt
mkdir book
touch book/1.txt
touch book/2.txt
gzip book.txt //源文件會消失
gzip -c 1.txt > 1.txt.gz //源文件不消失
gzip book.txt //壓縮為.gz格式文件,源文件會消失
gzip -r book //把目錄下的每個子文件都變成壓縮包
cd book
gzip -d 1.txt.gz //解壓縮文件,不保留壓縮包
gunzip 2.txt.gz
~~~
- 安裝-VMware 虛擬機
- 遠程連接
- Windows -- wsl
- Linux -- 認識 Linux 和操作系統
- Linux -- Linux 和 windows 對比
- Linux -- 命令提示符
- Linux -- 文件目錄
- Linux -- 文件類型
- Linux -- 絕對和相對路徑
- Linux -- 常用快捷鍵
- Linux -- 三種幫助命令
- 幫助命令 -- man
- 幫助命令 -- help
- 幫助命令 -- info
- Linux -- 指令
- alias -- 設置別名
- history -- 查看歷史命令
- cd -- 更改目錄(切換文件夾)
- pwd -- 打印目錄
- ls -- 列出文件內容
- mkdir -- 創建文件夾
- rmdir -- 刪除一個空的目錄
- touch -- 創建普通文件/修改時間
- cp -- 復制粘貼
- mv -- 移動和重名
- rm -- 刪除
- cat/tac -- 查看純文本文件
- more/less -- 分頁讀取信息
- head -- 從文本開頭查看
- tail -- 從文本結尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 統計文件的行數、單詞、字節數
- tr -- 替換、縮減或刪除字符
- find -- 文件查找
- grep -- 文件當中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二進制/源代碼文件 路徑
- which -- 查找環境變量
- 壓縮和解壓
- ln -- 鏈接
- wget -- 下載指定的url資源
- 重定向 -- << /< />/> >
- 邏輯控制 -- &&
- echo -- 輸出指定內容
- date/cal -- 查看日期和日歷
- Linux -- 進程管理
- Linux-- ps 指令
- vi/vim - 文本編輯器
- 更多
- Linux-- 開關機命令
- Liunx -- 退出登錄
- Linux-- 查看登錄用戶信息
- Linux -- 環境變量
- Linux -- 用戶
- Linux -- 文件管理
- 文件權限設置 -- chmod
- 更改文件的擁有者 -- chown
- 默認權限 -- umask
- Linux -- 用戶
- 新建/刪除用戶 -- useradd/userdel
- 修改用戶屬性 -- usermod/chage
- 新建/刪除用戶組 -- groupadd/groupdel
- 用戶切換 -- su/sudo
- 用戶/用戶組的配置文件
- 用戶家目錄被刪除解決
- last、 lastlog命令查看用戶詳細的登錄信息
- Linux -- shell
- Linux -- 管道符號
- shell -- 執行
- shell -- 變量
- shell -- 字符串
- shell -- 數組
- Shell -- declare 設置變量屬性
- shell -- 數學計算
- shell -- 變量作用域
- shell -- 位置參數變量
- shell -- read
- shell - if 語句
- shell -- test
- shell -- case
- Linux -- 循環
- Linux -- 軟件包管理