tar語(yǔ)法
#壓縮tar?-czvf?***.tar.gz
tar?-cjvf?***.tar.bz2
#解壓縮tar?-xzvf?***.tar.gz
tar?-xjvf?***.tar.bz2
tar ?[主選項(xiàng)+輔選項(xiàng)] 文件或目錄
主選項(xiàng)是必須要有的宴胧,它告訴tar要做什么事情工闺。
輔選項(xiàng)是輔助使用的档泽,可以選用。
tar常用命令:
主選項(xiàng):
-x????從檔案文件中釋放文件竣付。
-c????創(chuàng)建新的檔案文件。如果用戶想備份一個(gè)目錄或是一些文件滞欠,就要選擇這個(gè)選項(xiàng)古胆。
-r?把要存檔的文件追加到檔案文件的末尾。例如用戶已經(jīng)做好備份文件,又發(fā)現(xiàn)還有一個(gè)目錄或
是一些文件忘?記備份了逸绎,這時(shí)可以使用該選項(xiàng)惹恃,將忘記的目錄或文件追加到備份文件中。
-t?列出檔案文件的內(nèi)容棺牧,查看已經(jīng)備份了哪些文件巫糙。
-u?更新文件。就是說(shuō)颊乘,用新增的文件取代原備份文件参淹,如果在備份文件中找不到要更新的文件,
則把它追加到備份文件的最后乏悄。
輔助選項(xiàng):
-j??代表使用‘bzip2’程序進(jìn)行文件的壓縮tar.bz2
-z??用gzip來(lái)壓縮/解壓縮文件浙值,加上該選項(xiàng)后可以將檔案文件進(jìn)行壓縮,但還原時(shí)也一定要使用該
選項(xiàng)進(jìn)行解壓縮纲爸。?tar.gz
-v?詳細(xì)報(bào)告tar處理的文件信息亥鸠。如無(wú)此選項(xiàng),tar不報(bào)告文件信息识啦。
-b???? 該選項(xiàng)是為磁帶機(jī)設(shè)定的负蚊,其后跟一數(shù)字,用來(lái)說(shuō)明區(qū)塊的大小颓哮,系統(tǒng)預(yù)設(shè)值為20(20×512 bytes)家妆。
-f?????? 使用檔案文件或設(shè)備,這個(gè)選項(xiàng)通常是必選的冕茅。
-k????? ?保存已經(jīng)存在的文件伤极。例如把某個(gè)文件還原,在還原的過(guò)程中遇到相同的文件姨伤,不會(huì)進(jìn)行覆蓋哨坪。
-m???????在還原文件時(shí),把所有文件的修改時(shí)間設(shè)定為乍楚。
-M????? 創(chuàng)建多卷的檔案文件当编,以便在幾個(gè)磁盤(pán)中存放。
-w????????? ?每一步都要求確認(rèn)徒溪。
tar包管理
1忿偷、tar包的創(chuàng)建
tar -cvf? file.tar file1? file2
tar -zcvf ?file.tar.gz? file1? file2
tar -jcvf?? file.tar.bz2? file1? file2
2、tar包的查看
tar -tvf ?file.tar
tar -ztvf? file.tar.gz
tar -jtvf ?file.tar.bz2
3臊泌、釋放tar包
tar -xvf? file.tar
tar -zxvf ?file.tar.gz
tar -jxvf ?file.tar.bz2
補(bǔ)充一點(diǎn) ? 如果需要打包一個(gè)文件夾鲤桥,但其中的幾個(gè)文件不需要打包,命令如下
打包test文件夾 ? ? ?test里的 ?1 ?這個(gè)文件夾不需要打包
[root@localhost /]# cd /usr/test
[root@localhost test]# ls
1 ?2 ?3
返回/usr 目錄
[root@localhost test]# cd /usr
[root@localhost usr]# tar -zcvf test.tar.gz --exclude=test/1 test
test/
test/3/
test/3/333.png
test/2/
test/2/222.png
果然沒(méi)有打包test/1 文件夾?
[root@localhost usr]# tar -zcvf test.tar.gz --exclude=test/1 test
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 打包命令 ? ?包名字 ? ? ?排除文件(注意路徑) ? ?打包文件
范例一:將整個(gè) /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[root@linux?~]#?tar?-cvf?/tmp/etc.tar?/etc??<==僅打包渠概,不壓縮茶凳!
[root@linux?~]#?tar?-czvf?/tmp/etc.tar.gz?/etc??<==打包后,以?gzip?壓縮
[root@linux?~]#?tar?-cjvf?/tmp/etc.tar.bz2?/etc??<==打包后,以?bzip2?壓縮
# 特別注意慧妄,在參數(shù) f 之后的檔案檔名是自己取的顷牌,我們習(xí)慣上都用 .tar 來(lái)作為辨識(shí)。
# 如果加 z 參數(shù)塞淹,則以 .tar.gz 或 .tgz 來(lái)代表 gzip 壓縮過(guò)的 tar file ~
# 如果加 j 參數(shù)窟蓝,則以 .tar.bz2 來(lái)作為附檔名啊~
# 上述指令在執(zhí)行的時(shí)候,會(huì)顯示一個(gè)警告訊息:
# 『tar: Removing leading `/' from member names』那是關(guān)于絕對(duì)路徑的特殊設(shè)定饱普。
范例二:查閱上述 /tmp/etc.tar.gz 檔案內(nèi)有哪些檔案运挫?
[root@linux?~]#tar?-tzvf?/tmp/etc.tar.gz
# 由于我們使用 gzip 壓縮,所以要查閱該 tar file 內(nèi)的檔案時(shí)套耕,
# 就得要加上 z 這個(gè)參數(shù)了谁帕!這很重要的!
范例三:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[root@linux?~]#?cd?/usr/local/src
[root@linux?src]#?tar?-xzvf?/tmp/etc.tar.gz
# 在預(yù)設(shè)的情況下冯袍,我們可以將壓縮檔在任何地方解開(kāi)的匈挖!以這個(gè)范例來(lái)說(shuō),
# 我先將工作目錄變換到 /usr/local/src 底下康愤,并且解開(kāi) /tmp/etc.tar.gz 儡循,
# 則解開(kāi)的目錄會(huì)在 /usr/local/src/etc 呢!另外征冷,如果您進(jìn)入 /usr/local/src/etc
# 則會(huì)發(fā)現(xiàn)择膝,該目錄下的檔案屬性與 /etc/ 可能會(huì)有所不同喔!
范例四:在 /tmp 底下检激,我只想要將 /tmp/etc.tar.gz 內(nèi)的 etc/passwd 解開(kāi)而已
[root@linux?~]#?cd?/tmp
[root@linux?tmp]#?tar?-xzvf?/tmp/etc.tar.gz?etc/passwd
# 我可以透過(guò) tar -tzvf 來(lái)查閱 tarfile 內(nèi)的文件名稱(chēng)肴捉,如果單只要一個(gè)檔案,
# 就可以透過(guò)這個(gè)方式來(lái)下達(dá)叔收!注意到齿穗! etc.tar.gz 內(nèi)的根目錄 / 是被拿掉了!
范例五:將 /etc/ 內(nèi)的所有檔案?jìng)浞菹聛?lái)饺律,并且保存其權(quán)限窃页!
[root@linux?~]#?tar?-czvpf?/tmp/etc.tar.gz?/etc
# 這個(gè) -p 的屬性是很重要的,尤其是當(dāng)您要保留原本檔案的屬性時(shí)蓝晒!
范例六:在 /home 當(dāng)中腮出,比 2005/06/01 新的檔案才備份
[root@linux?~]#?tar?-N?'2005/06/01'?-czvf?home.tar.gz?/home
范例七:我要備份 /home, /etc 帖鸦,但不要 /home/dmtsai
[root@linux?~]#?tar?--exclude?/home/dmtsai?-czvf?myfile.tar.gz?/home/*?/etc
范例八:將 /etc/ 打包后直接解開(kāi)在 /tmp 底下芝薇,而不產(chǎn)生檔案!
[root@linux?~]#?cd?/tmp
[root@linux?tmp]#?tar?-cvf?-?/etc?|?tar?-xvf?-
# 這個(gè)動(dòng)作有點(diǎn)像是cp -r /etc /tmp啦~依舊是有其有用途的作儿!
# 要注意的地方在于輸出檔變成 - 而輸入檔也變成 - 洛二,又有一個(gè) | 存在~
# 這分別代表 standard output, standard input 與管線命令啦!
# 這部分我們會(huì)在 Bash shell 時(shí),再次提到這個(gè)指令跟大家再解釋啰晾嘶!
++++++++++++++++++++++++++++++++++++++++++++
tar如何解壓文件到指定的目錄妓雾?
tar czvf mysql.tar.gz /var/lib/mysql
壓縮的文件,我想解壓到當(dāng)前目錄下垒迂,而不是絕對(duì)路徑下械姻,該如何解壓?
tar cxvf mysql.tar.gz的話机断,會(huì)覆蓋?/var/lib/mysql下全部文件吧楷拳?我現(xiàn)在就一個(gè)表壞了,想單獨(dú)恢復(fù)一個(gè)表的資料吏奸,而不是恢復(fù)全部數(shù)據(jù)庫(kù)欢揖,所以要解壓到指定的目錄下,再把那個(gè)表資料找不來(lái)恢復(fù)奋蔚。
============================================?
#tar zxvf mysql.tar.gz -C /home/aaa
============================================
tar zxvf mysql.tar.gz -C /home/aaa
這樣的話她混,解壓后的目錄結(jié)構(gòu)是怎么樣的?
/home/aaa/var/lib/mysql嗎泊碑?
============================================??
試下就知道了....
============================================
歸檔里面的所有文件均是相對(duì)引用坤按,歸檔解壓縮(釋放)在了當(dāng)前目錄。歸檔文件總是釋放到當(dāng)前目錄蛾狗,為的是防止破壞文件系統(tǒng)中重名的文件晋涣。
所以,樓主的解壓縮不會(huì)覆蓋/var/lib/mysql沉桌,只會(huì)釋放在當(dāng)前目錄先谢鹊,即./var/lib/mysql如果想覆蓋的話,在歸檔和解壓時(shí)請(qǐng)使用-P參數(shù):
tar zcvf mysql.tar.gz -P /var/lib/mysql
tar -Pzxvf mysql.tar.gz
============================================
zip:
$ zip -r -q -o shiyanzip /home/shiyan
$ du -h shiyan.zip?
$ file shiyan.zip
上面命令將 shiyan 的 home 目錄打包成一個(gè)文件留凭,并查看了打包后文件的大小和類(lèi)型佃扼。
第一行命令中,
-r ? ?(recursive)參數(shù)表示遞歸打包包含子目錄的全部?jī)?nèi)容蔼夜,
-q ? (quit)參數(shù)表示為安靜模式兼耀,即不向屏幕輸出信息,
-o求冷,表示輸出文件瘤运,需在其后緊跟打包輸出文件名。
后面使用du命令查看打包后文件的大薪程狻(后面會(huì)具體說(shuō)明該命令)拯坟。
設(shè)置壓縮級(jí)別為9和1(9最大,1最小)韭山,重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyan -x ~/*.zip?
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyan -x ~/*.zip
$ du -h -d 0 *.zip ~ | sort
74m /home/shiyan
34mshiyan_9.zip
37m
shiyan_1.zip
這里添加了一個(gè)參數(shù)用于設(shè)置壓縮級(jí)別-[1-9]郁季,1表示最快壓縮但體積大冷溃,9表示體積最小但耗時(shí)最久。
最后那個(gè)-x是為了排除我們上一次創(chuàng)建的 zip 文件梦裂,否則又會(huì)被打包進(jìn)這一次的壓縮文件中似枕,
注意:這里只能使用絕對(duì)路徑,否則不起作用年柠。
我們?cè)儆胐u命令分別查看默認(rèn)壓縮級(jí)別凿歼、最低、最高壓縮級(jí)別及未壓縮的文件的大腥吆蕖:
創(chuàng)建加密zip包
使用-e參數(shù)可以創(chuàng)建加密壓縮包:
$ zip -r -e -o shiyan_encryption.zip /home/shiyan
注意:關(guān)于zip命令毅往,因?yàn)?Windows 系統(tǒng)與 Linux/Unix 在文本文件格式上的一些兼容問(wèn)題,
比如換行符(為不可見(jiàn)字符)派近,在 Windows 為 CR+LF(Carriage-Return+Line-Feed:回車(chē)加換行)攀唯,
而在 Linux/Unix 上為 LF(換行),
所以如果在不加處理的情況下渴丸,在 Linux 上編輯的文本侯嘀,在 Windows 系統(tǒng)上打開(kāi)可能看起來(lái)是沒(méi)有換行的。
如果你想讓你在 Linux 創(chuàng)建的 zip 壓縮文件在 Windows 上解壓后沒(méi)有任何問(wèn)題谱轨,那么你還需要對(duì)命令做一些修改:
$ zip -r-l-o shiyanlou.zip /home/shiyanlou
需要加上-l參數(shù)將LF轉(zhuǎn)換為CR+LF來(lái)達(dá)到以上目的戒幔。
使用unzip命令解壓縮zip文件
將shiyanlou.zip解壓到當(dāng)前目錄:
$ unzip shiyan.zip
使用安靜模式,將文件解壓到指定目錄:
$ unzip -q shiyan.zip-dziptest
上述指定目錄不存在土童,將會(huì)自動(dòng)創(chuàng)建诗茎。如果你不想解壓只想查看壓縮包的內(nèi)容你可以使用-l參數(shù):
$ unzip-lshiyanlou.zip
? ? ? ?注意:使用unzip解壓文件時(shí)我們同樣應(yīng)該注意兼容問(wèn)題,不過(guò)這里我們關(guān)心的不再是上面的問(wèn)題献汗,而是中文編碼的問(wèn)題.
通常 Windows 系統(tǒng)上面創(chuàng)建的壓縮文件敢订,如果有有包含中文的文檔或以中文作為文件名的文件時(shí)默認(rèn)會(huì)采用 GBK 或其它編碼,而 Linux 上面默認(rèn)使用的是 UTF-8 編碼罢吃,如果不加任何處理楚午,直接解壓的話可能會(huì)出現(xiàn)中文亂碼的問(wèn)題(有時(shí)候它會(huì)自動(dòng)幫你處理),為了解決這個(gè)問(wèn)題尿招,我們可以在解壓時(shí)指定編碼類(lèi)型矾柜。
使用-O(英文字母,大寫(xiě)o)參數(shù)指定編碼類(lèi)型:
unzip-OGBK中文壓縮文件.zip
rar打包壓縮命令: