xz命令在linux不是常用,因為xz命令壓縮時間較長。但xz也有它的優(yōu)勢,xz解壓率較高,并且可以指定壓縮率,壓縮率由-0 到 -9參數(shù)決定,數(shù)字越大壓縮率越高。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),仙居企業(yè)網(wǎng)站建設(shè),仙居品牌網(wǎng)站建設(shè),網(wǎng)站定制,仙居網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,仙居網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
參數(shù)解釋
實例
注意,如果是.tar.xz包,需要使用xz先將其解壓,再用tar解壓
下載一個xz壓縮包并解壓。
其他方法:
一、通過 yum裝個xz壓縮包,然后解壓,操作如下:
yum search xz
xz -d 你的文件.tar.xz
tar -xvf 你的文件.tar.xz
二、創(chuàng)建或解壓tar.xz文件的方法
習(xí)慣了 tar czvf 或 tar xzvf 的人可能碰到 tar.xz也會想用單一命令搞定解壓或壓縮。
其實不行 tar里面沒有征對xz格式的參數(shù)比如 z是針對 gzip,j是針對 bzip2。
創(chuàng)建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 這樣創(chuàng)建xxx.tar文件先,然后使用 xz -z xxx.tar 來將 xxx.tar壓縮成為 xxx.tar.xz
首先:\x0d\x0a你需要了解xz壓縮工具,具體百度(貌似比bzip2和gzip好用)..總之凡是以.xz結(jié)尾的都可以用命令unxzfilename解壓..解壓后就是tar文件.\x0d\x0atar文件直接tarzxffilename就行了...\x0d\x0a\x0d\x0a另:\x0d\x0a一般的都是.tar.gz文件直接用tar-xzvffilename.tar.gz就能解壓解檔....
Linux下進(jìn)行文件的解壓、復(fù)制、移動應(yīng)該是最常見的操作了。尤其是我們在項目中使用大量的數(shù)據(jù)集文件(比如機(jī)器學(xué)習(xí))文件。然而使用這些命令時一不留神就會掉進(jìn)坑里,這篇文章我們就來細(xì)數(shù)用Shell進(jìn)行文件操作的這些坑。
Linux下壓縮文件的常見擴(kuò)展名包括 .gz , .tar , .tar.gz , .zip 等。這些壓縮格式都能夠跨平臺(Windows/Mac/Linux)使用。下面我們以 .zip 文件為例子來講解。我們已知一個文本文件壓縮包 test.zip ,想把它解壓,很簡單,運(yùn)行 unzip 命令即可:
如果我們想要將 test.txt 重新壓縮呢?你可能情不自禁會執(zhí)行 zip test.txt ,然后我們發(fā)現(xiàn)提示:
其實是傳參數(shù)傳錯了,導(dǎo)致 zip 誤把 test.txt 當(dāng)成壓縮后的文件名了,這當(dāng)然不是合法的。我們看 zip 的參數(shù)構(gòu)成:
[-b path] 是壓縮后的 .zip 文件的路徑, zipfile list 是待壓縮的文件列表。于是,我們這樣寫即可成功壓縮:
當(dāng)然, zip 也支持將多個文件壓縮:
此時我們發(fā)現(xiàn)再解壓 test3.zip 會發(fā)現(xiàn)重新得到了兩個原始文件:
zip 也支持對目錄壓縮,如我們嘗試壓縮 test 目錄:
此時再解壓 test4.zip 則會重新生成 test 目錄:
不過, zip 是將輸入的文件列表 分別 進(jìn)行壓縮的操作,即是對目錄來進(jìn)行壓縮也是對目錄內(nèi)的所有文件one-by-one的操作。那我們需要將很多文件先打包成一個文件,然后再壓縮呢?此時就要用到 tar 了。
很多人誤解 tar 是個壓縮命令,其實壓縮命令是 gzip 、 xz 以及我們上文提到的 zip 這些。 tar 是個打包命令,只不過附帶壓縮與解壓的功能。 tar 的選項多如牛毛,為了減輕大家的記憶負(fù)擔(dān),我們只介紹下面兩個選項:
-c : 建立打包文件(可搭配 -v 將過程中打包的文件可視化);
-x :解包或解壓縮的功能(可搭配 -C 在特定目錄解壓);
(其實還有表示通過gzip進(jìn)行壓縮/解壓縮的 -z ,通過bzip2的支持進(jìn)行壓縮/解壓縮的 -j ,通過xz的支持進(jìn)行壓縮解壓縮的 -J 等,但我們這里統(tǒng)一用 .zip 示范,就省去這些參數(shù)了)
那么,我們只需要記住下面的命令即可:
壓縮: tar -cv -f filename.zip 要被壓縮的文件或目錄名稱
解壓縮: tar -xv -f filename.zip -C 欲解壓的目錄(這個目錄必須已經(jīng)存在)
注意,壓縮傳參順序是壓縮后的.zip文件在前,壓縮前的文件在后 ,別搞錯了。(讓人聯(lián)想到gcc編譯器,不過 gcc 傳參時規(guī)定是 -o output_file.out 的形式來指定輸出的可執(zhí)行文件,就回避了這個順序問題)
比如,我們要將 test 文件夾(該文件夾下有一個 test.txt 文件)壓縮,可以運(yùn)行如下命令:
然后將其解壓到當(dāng)前目錄,可運(yùn)行如下命令:
多個文件壓縮:
然后將其解壓到當(dāng)前目錄:
由上面所說, zip / unzip 和 tar 都是壓縮什么解壓出來就是什么,原來是目錄就是目錄,原來沒目錄不會幫你自動生成一個目錄 ,但Linux或Mac系統(tǒng)的可視化壓縮工具就不一樣了(在Mac中被稱為「歸檔實用工具」)。Mac中對目錄壓縮時壓縮命令和 tar 命令是等效的,比如我們想用Mac自帶的壓縮工具壓縮 test 文件夾:
會生成對應(yīng)的歸檔文件:
再解壓會得到同樣的文件夾(會自動幫我們重命名),不會幫我們生成多余的目錄:
這個文件夾內(nèi)部才是我們需要的文件:
它會自動幫我們生成一個名為 歸檔.zip 的文件:
這個文件夾內(nèi)部才是我們需要的文件:
這個文件夾內(nèi)部才是我們需要的文件:
這在對大量文件操作時需要額外注意,否則會白白開銷你一次拷貝文件的時間!
我們緊接著上面的情景。假設(shè)我們當(dāng)前的目錄為項目目錄,而我們手滑使用了系統(tǒng)自帶的可視化解壓工具生成了一個多余的目錄。我們接下來要把系統(tǒng)生成的多余的 歸檔 文件夾里的文件拷貝到當(dāng)前目錄,那么我們可以使用帶 r 參數(shù)的 cp 命令:
這里 -r 參數(shù)表示遞歸復(fù)制命令,用于目錄的遞歸復(fù)制。注意命令中的 歸檔/ 表示 歸檔 目錄下的所有文件,意思和 歸檔/* 相同:
選項參數(shù) -r 寫成 -R 是等效的:
但如果直接傳入?yún)?shù) 歸檔 ,則表示將這個目錄整個地復(fù)制:
同一個目錄下不可能有兩個相同名稱的子目錄,這當(dāng)然就會出錯,當(dāng)然我們可以將其復(fù)制到另外一個目錄里:
你可能要問,加 r 和不加 r 有啥區(qū)別?如果不加 r ,則默認(rèn)是跳過目錄的,也就是說只能copy文件:
我們還是緊接著上面的場景。假定我們已經(jīng)將 歸檔 文件夾中的 test.txt 、 test2.txt 成功拷貝到當(dāng)前項目目錄了。現(xiàn)在我們有了個新的需求:我們在項目目錄中建了一個 data 子目錄,現(xiàn)在需要將項目目錄中的 test.txt 、 test2.txt 移動到 data 子目錄中。這就需要如下命令:
注意,如果有多個源文件或目錄,則最后一個目標(biāo)文件(也就是這里的data)一定是目錄 。當(dāng)我們只移動一個文件時,就有潛在的二義性。這里因為 data 目錄本身存在,我們移動 test.txt 到 data 目錄還能正常執(zhí)行:
但是如果data目錄不存在,就會將 mv 解釋為重命名的意思,比如如果我們將 data 目錄刪除再執(zhí)行:
此時就等效于把 test.txt 更名為 data 文件:
可以看出,第一個字母是 - ,也就意味著 data 是普通文件,不是目錄(是目錄的話第一個字母是 d )。
因此,使用 mv 語句時要格外小心,因為它既有移動到目錄的作用,也有重命名的作用,一不注意就可能出錯!
有移動到目錄的作用,也有重命名的作用,一不注意就可能出錯!
就可能出錯!
tar 的功能類似于 Windows 中的 WinRAR。它可以將多個目錄或文件打包成一個大文件,在打包的過程中還可以透過 gzip/bzip2/xz 的支持,對文件進(jìn)行壓縮 1 。
tar 的選項參數(shù)很多,主要用到的有以下這些:
還是太多,記不住怎么辦? 記住下面這些最常用的命令即可:
總結(jié)一下:z 為gzip;j 為bzip2;J 為xz。c 為壓縮;t 為查詢;x 為解壓縮。最后跟著 vf。f 一定要是最后一個,如果放在其他選項之前,tar 就會把文件名搞錯。比如 tar -zcfv xxx 命令,tar 指令就會認(rèn)為壓縮文件名為 v!
壓縮的文件名稱要根據(jù)壓縮算法加上響應(yīng)的后綴:
只有知道了壓縮算法,我們才能解的出來,你說是嗎?所以文件名規(guī)范很重要。
假設(shè)我們需要備份 /etc 文件夾,把它打成一個壓縮包 1 。這在實際應(yīng)用中很常見,因為 /etc 文件夾存放了系統(tǒng)主要配置文件。在英文中完整單詞是etc.,也就是后面會帶上一個句點,表示“等等”之意。
接下來,我們分別使用 gzip、bzip2與 xz 算法對 /etc 文件夾進(jìn)行打包壓縮。
gzip 壓縮指令: time tar -zpcvf /root/etc.tar.gz /etc
bzip2壓縮指令: time tar -jpcvf /root/etc.tar.bz2 /etc
xz 壓縮指令: time tar -Jpcvf /root/etc.tar.xz /etc
從 real 中可以看出: gzip 的壓縮速度最快,而 xz 的壓縮速度最慢。
從大小上來看,xz 的壓縮率最高,而gzip 壓縮率最差。
壓縮率高,自然需要時間成本。因此需要壓縮的文件夾很大,那么就要多多考慮時間成本咯。因為 gzip 壓縮速度快,這也是 *.tar.gz 比較流行的原因之一。
假設(shè)有這樣一種場景:我們需要打包某個文件夾(/root),但這個文件夾中的某個文件或者子文件夾不想打包進(jìn)去(帶 etc 前綴)。也就是希望這個文件夾部分打包,部分不打包??梢詧?zhí)行以下指令:
tar -zcvf /root/test.tar.gz --exclude=/root/etc* --exclude=/root/test.tar.gz /root
加了 --exclude=/root/test.tar.gz 是為了排除自身,否則壓縮包中會包含一個大小為 0 的自身文件,這恐怕不是我們希望看到的:
通過 tar -ztvf test.tar.gz 就可以查看剛剛新打的壓縮包中所包含的文件列表:
使用命令 tar -ztvf etc.tar.gz 查看剛剛打好的壓縮包。注意要使用匹配的解壓縮算法才能正確解壓,比如示例中是 gz 作為后綴,所以加了 -z 選項表示使用 gzip 算法進(jìn)行解壓。
部分輸出內(nèi)容:
可以看到該命令把文件的權(quán)限、賬戶以及歸屬組也一并打印出來了。
而且還有一點很關(guān)鍵,這些文件都沒有根目錄。如果沒有拿掉根目錄,解壓縮后的文件名就會是絕對路徑, 亦即解壓縮后的數(shù)據(jù)一定會被放置 到 /etc/xxx 去 1 !這樣系統(tǒng)的 /etc 文件夾就會被覆蓋,后果很嚴(yán)重。所以,tar 打包指令默認(rèn)都會去除放入包中文件的根目錄。除非通過 -P 顯示要求保留這些文件的根目錄。
(1)完全解壓
利用 tar -zxvf etc.tar.gz -C /tmp 命令把 etc.tar.gz 解壓到 /tmp。解壓成功后,就會在 /tmp 下看到 /etc 文件夾。
如果需要在本地路徑下直接解開,那直接執(zhí)行 tar -zxvf etc.tar.gz 即可。
(2)部分解壓
假設(shè)我們需要把壓縮包(etc.tar.gz)中的 vconsole.conf 解壓出來。可以先執(zhí)行以下命令,查詢出該文件所對應(yīng)的相對路徑:
tar -ztvf etc.tar.gz | grep ‘console’
拿到需要解壓的文件路徑之后,就可以執(zhí)行 tar -zxvf etc.tar.gz etc/vconsole.conf
進(jìn)入當(dāng)前目錄的 etc 文件夾,就可以看到 vconsole.conf 已經(jīng)被解壓出來了:
【1】 鳥哥. 鳥哥的Linux私房菜 基礎(chǔ)學(xué)習(xí)篇[M]. 第四版. 北京: 人民郵電出版社,2018:359-362.
[root@localhost ~]#
用戶 @ 主機(jī)名 當(dāng)前目錄
總結(jié)Linux命令輸入規(guī)律:
如何輸入命令:
命令 [選項]([參數(shù)])[選項的值]([參數(shù)的值])空格分割
常見選項(參數(shù)):-h --help ; 特點:選項前有一個 -字母 或 --加單詞
例:find /home -name mk
命令后:左邊是源 右邊是目標(biāo)
例:cp a.txt a.txt.bak
作用:查看目錄下的文檔
語法:ls 目錄
-l 顯示詳細(xì)信息
-a 顯示隱藏文件
. 當(dāng)時目錄
.. 上級目錄
-d 查看目錄
-h 增強(qiáng)可讀性
作用:查看當(dāng)前所在的路徑
語法:pwd
例:[root@iZ9403omxhxZ html]# pwd
/var/www/html
作用:切換目錄
語法:cd 目錄名
cd 回到用戶的家目錄
cd ~ 回到-用戶的家目錄
cd - 回到上級切換時目錄
切換到/etc下
[root@localhost html]# cd /etc/
切換到/etc/sysconfig/
[root@localhost sysconfig]# cd /etc/sysconfig/
-h --help
man find
shutdow、init 、reboot
作用:關(guān)機(jī),重啟,定時關(guān)機(jī)
-r #重啟
-h #關(guān)機(jī)
-h +2 # 2分鐘后關(guān)機(jī)
-c
shutdown -h 22:00
作用:切換系統(tǒng)級別
語法:init 0~6
init 0命令用于立即將系統(tǒng)運(yùn)行級別切換為0,即關(guān)機(jī);
init 6命令用于將系統(tǒng)運(yùn)行級別切換為6,即重新啟動。
0是關(guān)機(jī)
1是單用戶
2是多用戶,不聯(lián)網(wǎng)
3是多用戶
4是不使用的
5是xwindows,也就是有界面的
6是重啟
自己去查下reboot怎么使用吧,這里就不過多介紹了reboot --help
[root@localhost~]# runlevel
N 3
語法:
ln(選項)(參數(shù))
它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數(shù)是-s,具體用法是:ln –s 源文件 目標(biāo)文件。
在此我們只介紹下軟鏈接。
我們?yōu)閖s文件夾建一個軟鏈接
我們?yōu)?var/www/html/forestry/js/ 在/root/目錄下建立一個名叫js2的軟鏈接。
圖中我們可以看到j(luò)s2的連接目錄是/var/www/html/forestry/js/