1 / 40

Linux 基礎學習

Linux 基礎學習. Chapter 9 檔案與檔案系統的壓縮與打包. 內容. 壓縮檔案的用途與技術 Linux 系統常見的壓縮指令 打包指令: tar 完整備份工具: dump 光碟寫入工具 其他常見的壓縮與備份工具. 9.1  壓縮檔案的用途與技術. 你是否有過文件檔案太大,導致無法以一片軟碟將它複製完成的困擾?又,你是否有過,發現一個軟體裡面有好多檔案,這些檔案要將它複製與攜帶都很不方便的問題?還有,你是否有過要備份某些重要資料,偏偏這些資料量太大了,耗掉了你很多的磁碟空間呢?這個時候,那個好用的『檔案壓縮』技術可就派的上用場了!

Download Presentation

Linux 基礎學習

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux 基礎學習 Chapter 9 檔案與檔案系統的壓縮與打包 Linux基礎--檔案與檔案系統的壓縮與打包

  2. 內容 • 壓縮檔案的用途與技術 • Linux 系統常見的壓縮指令 • 打包指令: tar • 完整備份工具:dump • 光碟寫入工具 • 其他常見的壓縮與備份工具 Linux基礎--檔案與檔案系統的壓縮與打包

  3. 9.1 壓縮檔案的用途與技術 你是否有過文件檔案太大,導致無法以一片軟碟將它複製完成的困擾?又,你是否有過,發現一個軟體裡面有好多檔案,這些檔案要將它複製與攜帶都很不方便的問題?還有,你是否有過要備份某些重要資料,偏偏這些資料量太大了,耗掉了你很多的磁碟空間呢?這個時候,那個好用的『檔案壓縮』技術可就派的上用場了! 因為這些比較大型的檔案透過所謂的檔案壓縮技術之後,可以將它的磁碟使用量降低,可以達到減低檔案容量的效果,此外,有的壓縮程式還可以進行容量限制,使一個大型檔案可以分割成為數個小型檔案,以方便軟碟片攜帶呢! 那麼什麼是『檔案壓縮』呢?我們來稍微談一談它的原理好了。目前我們使用的電腦系統中都是使用所謂的 bytes 單位來計量的!不過,事實上,電腦最小的計量單位應該是 bits 才對啊,此外,我們也知道 1 byte = 8 bits 。但是如果今天我們只是記憶一個數字,亦即是 1 這個數字呢?它會如何記錄?假設一個 byte 可以看成底下的模樣: □□□□□□□□

  4. 9.2Linux 系統常見的壓縮指令

  5. 9.2Linux 系統常見的壓縮指令 • 9.2.1compress

  6. 9.2Linux 系統常見的壓縮指令 • 9.2.2gzip (無參數-壓縮, -d-解壓縮) zcat

  7. 9.2Linux 系統常見的壓縮指令 • 9.2.3bzip2, bzcat

  8. Linux基礎--磁碟檔案系統

  9. gzip -c -v a > a.gz a: 98.5% (saved) bzip2 -c -v a > a.bz2 a: 61.731:1, 0.130 bits/byte, 98.38% saved, 4136 in, 67 out. /// mkdir dir 在dir中新增5 files gzip dir >> 不行 bzip2 dir >> 不行 gzip or bzip2 dir/* >> 對個別files 壓縮 結論: gzip or bzip2 不能對dir壓縮  所以才會有tar

  10. tar • 請記得加 -f 參數 指定要 • 壓縮(-c) to dir.tar • 解壓縮(-x) from dir.tar • 其實,記-c -x -f 就好了 • 啊不然 -z & -j 也記一下好了 • -大C 可指定 解壓path (-C只用在解壓) • mkdir dir; cd dir; touch a b c d e • 壓縮: tar -c dir -f dir.tar; ll • rm -rf abc; ll • 解壓縮: tar -xf dir.tar ( or tar -x -fdir.tar)解壓時-f可與其它option寫在一起,壓時不可

  11. tar • cd dir; dd if=/dev/zero of=a bs=1M count=10再做同樣動作產生b & c file (共30MBMB) • 只打包為tar • tar -cv dir -f dir.tar(-f可以放前面,我習慣放後面,比較直覺) • 打包,並以gzip壓 • tar -cvz dir -f dir.tar.gz • 打包,並以bzip2壓 • tar -cvj dir -f dir.tar.gz • lldrwxr-xr-x 2 root root 4096 2013-08-21 02:45 dir-rw-r--r-- 1 root root 31467520 2013-08-21 02:50 dir.tar-rw-r--r-- 1 root root 187 2013-08-21 03:31 dir.tar.bz2-rw-r--r-- 1 root root 30801 2013-08-21 02:50 dir.tar.gz看看 bzip2 & gzip的壓縮比率差多少!!

  12. tar • 解.tar • tar -xv -f dir.tar • 解.tar.gz • tar -xvz -f dir.tar.gz • 解.tar.bz2 • tar -xvj -f dir.tar.bz2 • 檢視(查詢-tv)壓縮檔內容 • tar -tv -f dir.tar (其實檢視全部都用 -tv即可,不需下一行) • tar -tv(加z or j較清楚,但其實不用加) -f dir.tar.gz (or dir.tar.bz2) • 我習慣以-cv or -xv開頭,把 z or j放後面,bird 跟我相反,請習慣把 -f 獨立出來

  13. tar • -v詳細的檔案權限/屬性都會被列出來如果只是想要知道檔名,將 -v 拿掉 • 備份/以下dir時預設會把"/"拿掉,以免不小心回寫時覆蓋掉 • tar -cvjp /etc -f /root/etc.tar.bz2(過程即會提示已把"/"拿掉) • tar -tvj -f /root/etc.tar.bz2  沒有"/" • 若確定要備份有"/"的壓縮檔:tar -cvjpP /etc -f /root/etc.tar.bz2 • tar -tvj -f /root/etc.tar.bz2  有"/“

  14. tar 僅解開單一檔案的方法 • # 1. 先找到我們要的檔名,假設解開 shadow 檔案好了: tar -jtv -f /root/etc.tar.bz2 | grep 'shadow' … -r-------- root/root 1257 2008-09-29 02:21:25 etc/shadow <==這是我們要的! • # 2. 將該檔案解開!語法與實際作法如下: tar -jxv -f 打包檔.tar.bz2 待解開檔名 tar -jxv -f /root/etc.tar.bz2 etc/shadow  不可以寫成 /etc/shadow (輸出)etc/shadow ll etc -r-------- 1 root root 1257 Sep 29 02:21 shadow <==呦喝!只有一個檔案啦! • # 很有趣!此時只會解開一個檔案而已!不過,重點是那個檔名!你要找到正確的檔名。 • # 在本例中,你不能寫成 /etc/shadow !因為記錄在 etc.tar.bz2 內的檔名之故

  15. tar打包某(個或些)目錄,但不含該目錄下的某些檔案之作法tar打包某(個或些)目錄,但不含該目錄下的某些檔案之作法 • 假設我們想要打包 /etc /root 這兩個目錄,新的打包檔案要放置成為 /root/system.tar.bz2, 但卻不想要打包 • 1.) /root/etc* 開頭的檔案,因為該檔案都是剛剛我們才建立的備份檔嘛! • 2.) 當然這個檔案不要打包自己 (因為這個檔案放置在 /root 底下啊!) • --exclude 就是不包含的意思: • tar -cvj /etc /root -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 • (bird把-cvj 要打包的資料夾/etc /root放最後面,跟本人習慣不符,我覺得把要打包的資料夾,緊接著放在-cvj後面較直覺) • 舊版tar 的--exclude與要排除的file or dir可空一格,現在一律要用=

  16. tar • 特殊應用:利用管線命令與資料流 • # 1. 將 /etc 整個目錄一邊打包一邊在 /tmp 解開 • [root@www ~]# cd /tmp • [root@www tmp]# tar -cvf - /etc | tar -xvf - • # 這個動作有點像是 cp -r /etc /tmp 啦 • 這例子還有更棒的應用,請開兩台電腦,把Server_A的/root/tmp 打包為.tar後傳到Server_B並解壓縮在/root/tmp下: • Server_A: tar -cv /root/tmp -f - | ssh root@Server_B_IP tar -xv -f - -C /root/tmp Linux基礎--磁碟檔案系統

  17. tar • cd /root/tmp • tar -cv . -f abc.tar • >> ./abc.tar:檔案是保存檔;未傾印 (因為沒有設 --exclude=abc.tar,意思就是abc.tar本身不打包) • 正確應為 tar -cv . -f abc.tar --exclude=abc.tar Linux基礎--磁碟檔案系統

  18. tar • tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | grep -v '/$‘  grep -v 指的是後面字串以外的, '/$'指的是: "最後是/的",所以:grep -v '/$‘指的是 "最後不是/的"  Linux基礎--磁碟檔案系統

  19. tar • cd /root/tmp • tar -cv . -f abc.tar • >> ./abc.tar:檔案是保存檔;未傾印 (因為沒有設 --exclude=abc.tar,意思就是abc.tar本身不打包) • 正確應為 tar -cv . -f abc.tar --exclude=abc.tar Linux基礎--磁碟檔案系統

  20. 9.3 打包指令: tar • 9.3.1tar • 其實最簡單的使用tar 就只要記憶底下的方式即可: • 壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的檔案或目錄名稱 • 查 詢:tar -jtv -f filename.tar.bz2 • 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄

  21. 9.3 打包指令: tar • 使用 tar 加入 -j 或 -z 的參數備份 /etc/ 目錄

  22. 9.3 打包指令: tar • 查閱 tar 檔案的資料內容(可察看檔名),與備份檔名有否根目錄的意義

  23. 9.3 打包指令: tar • 如果你確定你就是需要備份根目錄到 tar 的檔案中,那可以使用 -P (大寫) 這個選項,請看底下的例子分析

  24. 9.3 打包指令: tar • 將備份的資料解壓縮,並考慮特定目錄的解壓縮動作 (-C 選項的應用)

  25. 9.3 打包指令: tar • 僅解開單一檔案的方法

  26. 9.3 打包指令: tar • 打包某目錄,但不含該目錄下的某些檔案之作法 Linux基礎--檔案與檔案系統的壓縮與打包

  27. 9.3 打包指令: tar • 僅備份比某個時刻還要新的檔案

  28. 9.3 打包指令: tar • 特殊應用:利用管線命令與資料流

  29. 9.4 完整備份工具:dump • 9.4.1dump dump 運作的等級 (level)

  30. 9.4 完整備份工具:dump • 用 dump 備份完整的檔案系統

  31. 9.4 完整備份工具:dump DUMP: Volume 1 transfer rate: 5550 kB/s DUMP: 5550 blocks (5.42MB) on 1 volume(s) DUMP: finished in 1 seconds, throughput 5550 kBytes/sec DUMP: Date of this level 0 dump: Tue Dec 2 02:53:45 2008 DUMP: Date this dump completed: Tue Dec 2 02:53:47 2008 DUMP: Average transfer rate: 5550 kB/s DUMP: DUMP IS DONE # 在指令的下達方面,dump 後面接 /boot 或 /dev/hdc1 都可以的! # 而執行 dump 的過程中會出現如上的一些訊息,你可以自行仔細的觀察! [root@www ~]# ll /root/boot.dump /etc/dumpdates -rw-rw-r-- 1 root disk 43 Dec 2 02:53 /etc/dumpdates -rw-r--r-- 1 root root 5683200 Dec 2 02:53 /root/boot.dump # 由於加上 -u 的選項,因此 /etc/dumpdates 該檔案的內容會被更新!注意, # 這個檔案僅有在 dump 完整的檔案系統時才有支援主動更新的功能。 # 4. 觀察一下系統主動建立的記錄檔: [root@www ~]# cat /etc/dumpdates /dev/hdc1 0 Tue Dec 2 02:53:47 2008 +0800 [檔案系統] [等級] [ ctime 的時間 ]

  32. 9.4 完整備份工具:dump • 用 dump 備份非檔案系統,亦即單一目錄的方法

  33. 9.4 完整備份工具:dump • 9.4.2restore

  34. 9.5 光碟寫入工具 • 9.5.1mkisofs:建立映像檔

  35. 9.5 光碟寫入工具 • 9.5.2cdrecord:光碟燒錄工具

  36. 9.5 光碟寫入工具 • 偵測你的燒錄機所在位置

  37. 9.5 光碟寫入工具 • 進行 CD 的燒錄動作

  38. 9.5 光碟寫入工具 • 進行 DVD-RW 的燒錄動作

  39. 9.6 其他常見的壓縮與備份工具 • 9.6.1dd

  40. 9.6 其他常見的壓縮與備份工具 • 9.6.2cpio

More Related