天天看點

Linux- 打包壓縮與備份——tar/cpio/dump/restore/dd/genisoimage1 檔案的打包與解包2 檔案的壓縮與解壓3 備份

1 檔案的打包與解包

    封包件:是許多檔案放在一起打成一個包,放在一起前檔案的大小總和與放一起後的大小總和是相同的。

1.1  tar指令

1)打包:  tar  cvf  封包件名 檔案

//c打包,v顯示打包時的詳細動态,f表示使用歸檔檔案,必須寫

   例如:tar  cvf   f.tar   f1    f2   

2)檢視封包件中的内容:  tar  tf   封包件名

   例如:tar  tf   f.tar    //t是顯示tar打封包件裡的内容

3)解包:tar  xvf   封包件名   //預設解包到目前目錄,原來的包還在

   例如:tar  xvf   f.tar      //x解包參數

   如果是解包到指定目錄:tar  xvf   封包件名  -C  目錄

   例如:tar  xvf  f.tar  -C  test      //C 指定解包的目的目錄

4)其他

tar  Af  b.tar  a.tar  //把a.tar中的檔案追加到b.tar中去

tar  rf   a.tar  f1.txt  f2.txt  //把f1,f2追加到a.tar中去,檔案字尾不一定是txt

tar  uf   a.tar  f1.txt  f2.txt  //判斷f1,f2兩個檔案如果比a.tar中的新,則替換

tar  cf   a.tar   f1.txt  f2.txt  --remove-files //把f1,f2檔案打入a.tar包中,完成打包後,将2個檔案從本地删除

tar  f  a.tar  --delete  f1.txt           //删除a.tar包中的f1.txt檔案

tar  f  a.tar  --get  f1.txt  f2.txt      //提取a.tar包中的f1,f2

注意:使用tar指令為檔案打包,封包件字尾預設為.tar;對目錄也可以打包

1.2  cpio指令

注意:該指令打包用的少,解包有時候會用cpio

1)打包,配合find使用:#find  ./  -type  f  | cpio   -ocvB > f.cpio

//o 将資料copy到檔案或裝置上;c是一種比較新的portable format方式存儲;v在螢幕上顯示備份過程中的檔案名;

2)檢視包内容:#cpio   -tv   <  f.cpio

3) 解包:     #cpio  -ivdm  < f.cpio

注意:使用cpio指令為檔案打包,封包件字尾預設為.cpio

2 檔案的壓縮與解壓

    壓縮檔案:把一堆檔案壓縮了,檔案壓縮後總體變小了

    壓縮指令    gzip     bzip2      xz

    解壓縮指令  gunzip   bunzip2   unxz

2.1 壓縮包的建立與解壓

1)建立壓縮包

tar  cvfz   壓縮封包件.tar.gz  檔案    //tar.gz=tgz

tar  cvfj    壓縮封包件.tar.bz2  檔案   //tar.bz2=taz

tar  cvfJ   壓縮封包件.tar.xz   檔案   //tar.xz=txz

2)解壓縮包

  tar   xvfz   壓縮封包件.tar.gz

  tar   xvfj   壓縮封包件.tar.bz2

  tar   xvfJ   壓縮封包件.tar.xz          注意:解壓至指定目錄用 –C

3)檢視壓縮包内容

   tar  tf  壓縮封包件    //無論字尾是哪種,都可以用這個檢視

3 備份

    備份的目的:用來恢複資料

3.1 備份政策

完整備份:又叫完全備份,備份全部的資料。恢複便捷,隻需要一份完整備份即可恢複全部資料;但是備份時間長,重複檔案較多

增量備份:備份上一次備份以外的資料。備份時間快,重複檔案少;恢複資料需要一份完整備份和一系列的增量備份,并且要按照先後順序進行恢複,如果丢失任意一份增量備份,則無法完全恢複資料

差異備份:備份自上次完整備份以來以外的資料。備份時間比完整備份快,重複檔案比完整備份少,恢複資料友善,隻需要一份完整備份和最新的一份差異備份即可恢複所有資料。

資料量小每月做一次完整備份,每周做一次增量或差異備份;資料量大的就每個季度做一次完整備份,每月做一次增量或差異備份;安全性要求高的就要采取兩地三中心的政策

3.2 備份指令dump

1)如果沒有這個指令,安裝即可:yum  install  dump –y 。

2)dump可以備份檔案、目錄與檔案系統(分區挂載點裡的檔案)

3)如何用dump備份

    注意:

    a) 備份檔案和目錄時不能将備份資訊寫入至/etc/dumpdates,即不能使用-u參數,隻允許0級(完整備份)備份;

    b) 對檔案系統進行備份,預設的方式為增量備份,如果采用差異備份,每次都進行1級備份即可。

格式:dump   –備份級别-uf   備份到哪個目錄上   要備份的檔案/目錄/檔案系統

例如:

dump  -0f  f1.dump  f1  //對檔案備份時不能加u這個參數,且備份級别隻能是0

dump  -0f  test.dump  test          //test是個目錄

dump  -1f  /dev/sdb  /dev/sda1     //将檔案系統sda1備份到sdb中

dump  -W                         //檢視最後一次備份的檔案及詳細資訊

增量備份的實作:

如果是将備份檔案存儲到系統安裝時的sda盤的分區中,那麼不需要對sda分區進行挂載使用,因為在安裝時已經弄好了。但是如果把備份檔案存儲到自己添加的硬碟中去,需要對自己添加的磁盤進行格式化、挂載使用。在挂載的LV上操作也可以。想存到哪個目錄就進到哪個目錄下。

例如如果想要把/dev/sdc中的内容存到/dev/sdb中去,首先要把兩塊磁盤格式化,挂載使用,/dev/sdb挂載點/mnt/sdb,/dev/sdc 挂載點/mnt/sdc。

cd /mnt/sdb

touch /mnt/sdc/f0        

dump -0uf  0.dump  /mnt/sdc      

ls

restore –tf  0.dump      

touch /mnt/sdc/f1

dump  -1uf  1.dump  /mnt/sdc     

ls      

restore  -tf  1.dump

touch  /mnt/sdc/f2                 

dump  -2uf  2.dump  /mnt/sdc

ls         

restore  -tf  2.dump             

touch /mnt/sdc/f3

dump  -3uf  3.dump  /mnt/sdc      

ls      

restore  -tf  3.dump

差異備份的實作:

cd /mnt/sdb

touch /mnt/sdc/f0         

dump -0uf  0.dump  /mnt/sdc        

ls

restore –tf  0.dump        

touch /mnt/sdc/f1           

dump  -1uf  1.dump  /mnt/sdc     

ls      

restore  -tf  1.dump

touch  /mnt/sdc/f2              

dump  -1uf  2.dump  /mnt/sdc

ls         

restore  -tf   2.dump

3.3 恢複指令

1)檢視備份檔案中的資料

    restore  -tf  備份檔案   //t指定備份媒體中的檔案,f指定所需要還原的備份媒體

2)恢複備份檔案至目前目錄

restore    -xf    備份檔案 //x提取備份媒體中的指定檔案

restore    -rf    備份檔案 //r指定還原操作

//有時候會讓輸入從哪一個卷開始恢複,輸入1 即可

3.4  dd指令

指定大小的塊拷貝一個檔案,并在拷貝的同時進行指定的轉換

兩個特殊的裝置檔案:

1)/dev/null位桶,垃圾桶,一般将檔案連接配接至位桶相當于删除該檔案。常用于将檔案軟連接配接至此,相當于删除檔案;還用于将系統不需要的日志檔案或輸出重定向至/dev/null相當于忽略系統日志的或輸出。

例如: systemctl  mask  firewalld , systemctl  unmask  firewalld  檢視輸出結果

       或echo   hello word   > /dev/null

2)/dev/zero 提供無限個0字元,一個空白檔案裡面都是0字元,當寫入内容後,有的字元就會變成1,進而常用于生成檔案。删除檔案就是把裡面的内容都寫成0字元。

    dd  if=源檔案/裝置名稱  of=目标檔案/裝置名稱  bs=每次轉換的大小  count=轉換的塊的數量

例如:dd  if=/dev/cdrom  of=./centos.iso  

                                      //将CD光牒轉換為iso,相當于CD光牒的刻錄,備份

dd  if=/dev/sda1  of=./boot.bak       //将sda3轉換成一個檔案

dd  if=/dev/zero   of=./disk1.img   bs=1M  count=100  //建立一個100M的虛拟硬碟,每次讀寫緩存為2M,總計累計100次。即bs*count=100M

用dd生成一個swap檔案并使用:

dd  if=/dev/zero   of=./1.swap   bs=100M   count=1  // 生成檔案

格式化:mkswap  ./1.swap

chmod   權限值   檔案名         //更改檔案權限

swapon   ./1.swap                //啟用      

swapon               //檢視目前系統内所有swap空間

swapoff   ./1.swap    //關閉

3.5  genisoimage  

将某個目錄打包成ISO映像檔案

genisoimage  -J   -L   -r   -o   etc.iso  /etc   

//将/etc目錄打包成etc.iso檔案,J使用Joliet格式的目錄與檔案名稱;L允許檔案名的第一個字元為句号;r使用rock ridge extensions,并開放全部檔案的讀取權限;o 指定映像檔案的名稱

genisoimage  -J  -v  –o  backup.iso    /mnt/backup     

//将/mnt/backup目錄做成一個backup.iso備份 ,v顯示詳細動作

3.6 其他指令 

wodim  刻錄CD光牒 ,

mt  控制錄音帶

轉載請注明出處,謝謝!

繼續閱讀