文件與文件系統(tǒng)的壓縮,打包與備份

壓縮文件的用途與技術(shù)

壓縮文件使文件大小減低菠赚,降低磁盤使用量脑豹。還可以分成數(shù)個(gè)小型文件,方便攜帶衡查。常用于網(wǎng)絡(luò)數(shù)據(jù)傳輸瘩欺,copy分享文件。

Linux系統(tǒng)常用的壓縮指令

在Linux的環(huán)境中,壓縮文件的擴(kuò)展名大多是:“.tar , .tar .gz, .tgz, .gz, .Z, .bz2, *.xz”俱饿。

壓縮指令很多歌粥,根據(jù)不同的壓縮技術(shù)分不同的指令和擴(kuò)展名,解壓縮文件要使用相應(yīng)壓縮的技術(shù)指令拍埠。

Linux文件的屬性基本上與文件名沒有絕對(duì)的關(guān)系阁吝,這里是為了人類使用的區(qū)分。常見的有

  • *.Z compress 程序壓縮的文件械拍;
  • *.zip zip 程序壓縮的文件;
  • *.gz gzip程序壓縮的文件装盯;
  • *.bz2 bzip2程序壓縮的文件坷虑;
  • *.xz xz程序壓縮的文件;
  • *.tar tar程序打包的數(shù)據(jù)埂奈,并沒有壓縮過迄损;
  • *.tar.gz tar程序打包的文件,其中并且經(jīng)過gzip的壓縮
  • *.tar.bz2 tar程序打包的文件账磺,其中并且經(jīng)過bzip2的壓縮
  • *.tar.xz tar程序打包的文件芹敌,其中并且經(jīng)過xz的壓縮

Linux上常見的壓縮指令就是gzip, bzip2以及最新的xz,compress 已經(jīng)退流行了垮抗。

tar是將很多文件“打包”成一個(gè)文件氏捞,而壓縮是只對(duì)一個(gè)文件的壓縮,一般兩種技術(shù)同時(shí)使用冒版。

gzip, zcat/zmore/zless/zgrep

gzip指令
目前 gzip 可以解開 compress, zip與gzip等軟件所壓縮的文件液茎,后綴名是*.gz 。

語法:
gzip [-cdtv#] 文件名
zcat 文件名.gz
選項(xiàng)與參數(shù):
-c :將壓縮的數(shù)據(jù)輸出到屏幕上辞嗡,可通過數(shù)據(jù)流重導(dǎo)向來處理捆等;
-d :解壓縮的參數(shù);
-t :可以用來檢驗(yàn)一個(gè)壓縮文件的一致性~看看文件有無錯(cuò)誤续室;
-v :可以顯示出原文件/壓縮文件的壓縮比等信息栋烤;
-# :# 為數(shù)字的意思,代表壓縮等級(jí)挺狰,-1 最快明郭,但是壓縮比最差、-9 最慢她渴,但是壓縮比最好达址!默認(rèn)是 -6

使用gzip壓縮的文件默認(rèn)成為.gz的文件名,原始文件就不再存在了趁耗。

范例:
$ gzip -v services ---壓縮文件
$ zcat services.gz ---將文件讀出來
$ gzip -d services.gz ---解壓縮
$ gzip -9 -c services>services.gz ---用最佳的壓縮比壓縮沉唠,并保留原本的文件
$ zgrep -n 'http' services.gz --- 在services.gz 中,找出 http 這個(gè)關(guān)鍵字在哪幾行

上面中:-c 將壓縮后文件內(nèi)容輸入屏幕苛败,> 將字符輸入成文件

zcat, zmore, zless,指令相當(dāng)于先解壓后再執(zhí)行cat,more,less. 使用不同的方式讀取純文件文件满葛,

使用zgrep從壓縮文件當(dāng)中來使用grep径簿。

bzip2,bzcat/bzmore/bzless/bzgrep

bzip 比gzip壓縮比更佳,用法幾乎相同嘀韧。

語法:
$ bzip2 [-cdkzv#] 文件名
$ bzcat 文件名.bz2
選項(xiàng)與參數(shù):
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到屏幕上篇亭!
-d :解壓縮的參數(shù)
-k :保留原始文件,而不會(huì)刪除原始的文件喔锄贷!
-z :壓縮的參數(shù) (默認(rèn)值译蒂,可以不加)
-v :可以顯示出原文件/壓縮文件的壓縮比等信息;
-# :與 gzip 同樣的谊却,都是在計(jì)算壓縮比的參數(shù)柔昼, -9 最佳, -1 最快炎辨!

范例:
$ bzip2 -v services ---使用bzip2壓縮
$ bzcat services.bz2 ---讀出原內(nèi)容
$ bzip2 -d services.bz2 ---解壓縮
$ bzip2 -c services>services.bz2 --壓縮并保留原本的文件

可以看到捕透,連選擇與參數(shù)是跟gzip一模一樣bzcat/bzmore/bzless/bzgrep和zcat/zmore/zless/zgrep使用是一樣的。

xz, xzcat/xzmore/xzless/xzgrep

語法:
$ xz [-dtlkc#] 文件名
$ xcat 文件名.xz
選項(xiàng)與參數(shù):
-d :就是解壓縮安晗簟乙嘀!
-t :測(cè)試壓縮文件的完整性,看有沒有錯(cuò)誤
-l :列出壓縮文件的相關(guān)信息
-k :保留原本的文件不刪除~
-c :同樣的破喻,就是將數(shù)據(jù)由屏幕上輸出的意思虎谢!
-# :同樣的,也有較佳的壓縮比的意思曹质!

范例
$ xz -v services
$ ls -l services*
$ xz -l services.xz
$ xzcat services.xz
$ xz -d services.xz
$ xz -k services

xz這個(gè)壓縮比比gzip bzip2 更高嘉冒,時(shí)間也花的更久。

打包指令:tar

將多個(gè)文件或目錄包成一個(gè)大文件

tar

語法:
$ tar [-z|-j|-J] [cv] [-f 待創(chuàng)建的新文件名] filename... <==打包與壓縮
$ tar [-z|-j|-J] [tv] [-f 既有的 tar文件名] <==察看文件名
$ tar [-z|-j|-J] [xv] [-f 既有的 tar文件名] [-C 目錄] <==解壓縮
選項(xiàng)與參數(shù):
-c :創(chuàng)建打包文件咆繁,可搭配 -v 來察看過程中被打包的文件名(filename)
-t :察看打包文件的內(nèi)容含有哪些文件名讳推,重點(diǎn)在察看“文件名”就是了;
-x :解打包或解壓縮的功能玩般,可以搭配 -C (大寫) 在特定目錄解開
特別留意的是银觅, -c, -t, -x 不可同時(shí)出現(xiàn)在一串命令行中。
-z :通過 gzip 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.gz
-j :通過 bzip2 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.bz2
-J :通過 xz 的支持進(jìn)行壓縮/解壓縮:此時(shí)文件名最好為 *.tar.xz
特別留意坏为, -z, -j, -J 不可以同時(shí)出現(xiàn)在一串命令行中
-v :在壓縮/解壓縮的過程中究驴,將正在處理的文件名顯示出來!
-f filename:-f 后面要立刻接要被處理的文件名匀伏!建議 -f 單獨(dú)寫一個(gè)選項(xiàng)啰H饔恰(比較不會(huì)忘記)
-C 目錄 :這個(gè)選項(xiàng)用在解壓縮,若要在特定目錄解壓縮够颠,可以使用這個(gè)選項(xiàng)熙侍。

其實(shí)最簡(jiǎn)單的使用tar就只要記憶下面的方式即可:

  • 壓 縮:tar -jcv -f filename.tar .bz2 要被壓縮的文件或目錄名稱
  • 查 詢:tar -jtv -f filename.tar .bz2
  • 解壓縮:tar -jxv -f filename.tar .bz2 -C 欲解壓縮的目錄

指令不會(huì)自己產(chǎn)生壓縮的文件名,在自己取文件名時(shí),要寫對(duì)擴(kuò)展名蛉抓。

范例:

#  tar -jcv -f etc.tar.bz2 /etc  --- 打包
#  tar -jtv -f etc.tar.bz2   ---查看
#  tar -jxv -f etc.tar.bz2 -C /tmp ---解壓縮
#  time tar -jpcv -f /root/etc.tar.bz2 /etc ---j使用bzip2壓縮打包庆尘,time 顯示打包時(shí)間,p 
#  time tar -Jpcv -f /root/etc.tar.bz2 /etc  --- J使用xz壓縮打包

僅解開單一文件的方法
# tar -jtv -f /root/etc.tar.bz2 | grep 'shadow'

打包某目錄巷送,但不含該目錄下的某些文件之作法:
# tar   -jcv    -f /root/system.tar.bz2  /root  --exclude=/root/etc* 

XFS 文件系統(tǒng)的備份與還原

XFS 文件系統(tǒng)備份 xfsdump

使用 xfsdump 時(shí)驶忌,請(qǐng)注意下面的限制喔:

  • xfsdump 不支持沒有掛載的文件系統(tǒng)備份!所以只能備份已掛載的笑跛!
  • xfsdump 必須使用 root 的權(quán)限才能操作 (涉及文件系統(tǒng)的關(guān)系)
  • xfsdump 只能備份 XFS 文件系統(tǒng)案赌А!
  • xfsdump 備份下來的數(shù)據(jù) (文件或儲(chǔ)存媒體) 只能讓 xfsrestore 解析
  • xfsdump 是通過文件系統(tǒng)的 UUID 來分辨各個(gè)備份文件的飞蹂,因此不能備份兩個(gè)具有相同UUID 的文件系統(tǒng)喔抒抬!

簡(jiǎn)單操作
語法:
$ xfsdump [-L S_label] [-M M_label] [-l #] [-f 備份文件] 待備份數(shù)據(jù)
$ xfsdump -I
選項(xiàng)與參數(shù):
-L :xfsdump 會(huì)紀(jì)錄每次備份的 session 標(biāo)頭,這里可以填寫針對(duì)此文件系統(tǒng)的簡(jiǎn)易說明
-M :xfsdump 可以紀(jì)錄儲(chǔ)存媒體的標(biāo)頭晤柄,這里可以填寫此媒體的簡(jiǎn)易說明
-l :是 L 的小寫,就是指定等級(jí)~有 0~9 共 10 個(gè)等級(jí)喔妖胀! (默認(rèn)為 0芥颈,即完整備份)
-f :有點(diǎn)類似 tar 啦!后面接產(chǎn)生的文件赚抡,亦可接例如 /dev/st0 設(shè)備文件名或其他一般文件文件名等
-I :從 /var/lib/xfsdump/inventory 列出目前備份的信息狀態(tài)

xfsdump 默認(rèn)僅支持文件系統(tǒng)的備份爬坑,并不支持特定目錄的備份~所以你不能用
xfsdump 去備份 /etc ! 因?yàn)? /etc 從來就不是一個(gè)獨(dú)立的文件系統(tǒng)涂臣!注意盾计!注意!

范例:

[root@localhost ~]# xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of localhost.localdomain:/boot
xfsdump: dump date: Mon Feb 20 12:13:32 2017
xfsdump: session id: 86c1217d-e6ff-4ee3-b35b-ec7153fc67f4
xfsdump: session label: "boot_all"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 148324608 bytes
xfsdump: /var/lib/xfsdump/inventory created
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 147932264 bytes
xfsdump: dump size (non-dir files) : 147668600 bytes
xfsdump: dump complete: 8 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /srv/boot.dump OK (success)
xfsdump: Dump Status: SUCCESS
[root@localhost ~]# ll /srv
總用量 144468
-rw-r--r--. 1 root root 147932264 2月  20 12:13 boot.dump
[root@localhost ~]# ll /var/lib/xfsdump/inventory
總用量 16
-rw-r--r--. 1 root root 5080 2月  20 12:13 0684a77e-9b76-48b1-9217-553a92f1c6bd.StObj
-rw-r--r--. 1 root root  312 2月  20 12:13 362a2f76-b699-4dba-a6c6-6cc28d04347e.InvIndex
-rw-r--r--. 1 root root  576 2月  20 12:13 fstab
#使用了    xfsdump 之后才會(huì)有上述 /var/lib/xfsdump/inventory  內(nèi)的文件產(chǎn)生喔赁遗!

用 xfsdump 進(jìn)行累積備份 (Incremental backups)

# 看一下有沒有任何文件系統(tǒng)被 xfsdump 過的數(shù)據(jù)署辉?
[root@localhost ~]# xfsdump -I
#創(chuàng)建一個(gè)大約 10  MB  的文件在    /boot   內(nèi):
[root@localhost ~]# dd if=/dev/zero of=/boot/testing.img bs=1M count=10
#開始創(chuàng)建差異備份文件,此時(shí)我們使用  level   1   吧:
[root@localhost ~]# xfsdump -l 1 -L boot_2 -M boot_2 -f /srv/boot.dump1 /boot
#最后再看一下是否有記錄    level   1   備份的時(shí)間點(diǎn)呢岩四?
[root@localhost ~]# xfsdump -I

XFS 文件系統(tǒng)還原 xfsrestore

xfsdump 的復(fù)原使用的是 xfsrestore 這個(gè)指令

語法
[root@study ~]# xfsrestore -I ==用來察看備份文件數(shù)據(jù)
[root@study ~]# xfsrestore [-f 備份文件] [-L S_label] [-s] 待復(fù)原目錄 <==單一文件全系統(tǒng)復(fù)原
[root@study ~]# xfsrestore [-f 備份文件] -r 待復(fù)原目錄 <==通過累積備份文件來復(fù)原系統(tǒng)
[root@study ~]# xfsrestore [-f 備份文件] -i 待復(fù)原目錄 <==進(jìn)入互動(dòng)模式
選項(xiàng)與參數(shù):
-I :跟 xfsdump 相同的輸出哭尝!可查詢備份數(shù)據(jù),包括 Label 名稱與備份時(shí)間等
-f :后面接的就是備份文件剖煌!企業(yè)界很有可能會(huì)接 /dev/st0 等磁帶機(jī)材鹦!我們這里接文件名!
-L :就是 Session 的 Label name 喔耕姊!可用 -I 查詢到的數(shù)據(jù)桶唐,在這個(gè)選項(xiàng)后輸入!
-s :需要接某特定目錄茉兰,亦即僅復(fù)原某一個(gè)文件或目錄之意尤泽!
-r :如果是用文件來儲(chǔ)存?zhèn)浞輸?shù)據(jù),那這個(gè)就不需要使用。如果是一個(gè)磁帶內(nèi)有多個(gè)文件安吁,
需要這東西來達(dá)成累積復(fù)原
-i :進(jìn)入互動(dòng)模式醉蚁,進(jìn)階管理員使用的!一般我們不太需要操作它鬼店!

用 xfsrestore 觀察 xfsdump 后的備份數(shù)據(jù)內(nèi)容
$ xfsrestore -I

簡(jiǎn)單復(fù)原 level 0 的文件系統(tǒng)
[root@localhost ~]# xfsrestore -f /srv/boot.dump -L boot_all /boot

復(fù)原累積備份數(shù)據(jù)
xfsrestore -f /srv/boot.dump1 /tmp/boot

僅還原部分文件的 xfsrestore 互動(dòng)模式
xfsrestore -f /srv/boot.dump -i /tmp/boot3

其他网棍,后續(xù)

dd 可備份完整的 partition 或 disk ,因?yàn)?dd 可讀取磁盤的 sector 表面數(shù)據(jù)

cpio 為相當(dāng)優(yōu)秀的備份指令妇智,不過必須要搭配類似 find 指令來讀入欲備份的文件名數(shù)
據(jù)滥玷,方可進(jìn)行備份動(dòng)作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巍棱,一起剝皮案震驚了整個(gè)濱河市惑畴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌航徙,老刑警劉巖如贷,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異到踏,居然都是意外死亡杠袱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門窝稿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來楣富,“玉大人,你說我怎么就攤上這事伴榔∥坪” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵踪少,是天一觀的道長(zhǎng)塘安。 經(jīng)常有香客問我,道長(zhǎng)援奢,這世上最難降的妖魔是什么耙旦? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮萝究,結(jié)果婚禮上免都,老公的妹妹穿的比我還像新娘。我一直安慰自己帆竹,他們只是感情好绕娘,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栽连,像睡著了一般险领。 火紅的嫁衣襯著肌膚如雪侨舆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天绢陌,我揣著相機(jī)與錄音挨下,去河邊找鬼。 笑死脐湾,一個(gè)胖子當(dāng)著我的面吹牛臭笆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秤掌,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼愁铺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了闻鉴?” 一聲冷哼從身側(cè)響起茵乱,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孟岛,沒想到半個(gè)月后瓶竭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渠羞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年斤贰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堵未。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盏触,靈堂內(nèi)的尸體忽然破棺而出渗蟹,到底是詐尸還是另有隱情,我是刑警寧澤赞辩,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布雌芽,位于F島的核電站,受9級(jí)特大地震影響辨嗽,放射性物質(zhì)發(fā)生泄漏世落。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一糟需、第九天 我趴在偏房一處隱蔽的房頂上張望屉佳。 院中可真熱鬧,春花似錦洲押、人聲如沸武花。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽体箕。三九已至专钉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間累铅,已是汗流浹背跃须。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娃兽,地道東北人菇民。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像换薄,于是被迫代替她去往敵國(guó)和親玉雾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容