查看完整版本: [轉貼]資料備份(Samba、Mysql)、加密

chun 2010-8-24 09:49

[轉貼]資料備份(Samba、Mysql)、加密

http://www.cses.tcc.edu.tw/~chihwu/backup_data.htm<br><h1 align="center">資料備份(Samba、Mysql)、加密</h1>

<hr>

<h2>一、前言</h2>     
     
<p style="margin-left: 20px; margin-right: 20px;">  用Linux 或 FreeBSD架設了
SMABA ,當作 FILE SERVER ,也弄了 Mysql來存放一些資料,接踵而來的就是備份的問題。最簡單最直接的方法,每天晚上把整個目錄
      
      
tar      
      
起來,那就解決了,這種做法的確很安全,但是資料量大時就不適用了。而且存放的空間也是需要考量的。</p>      
      
<p style="margin-left: 20px; margin-right: 20px;">本校沒有磁帶機、也沒有MO,還好有40GB 的
IDE      
      
HD,這就是備份下來檔案的儲存地方。除了本機上存放外,利用      
      
NFS 或 FTP 再存到別一台電腦上更好。多一份保障,</p>      
      
<h2>二、使用的程式</h2>      
      
<ol><li>
    <p style="margin-right: 20px;">會設定 crontab , 這是管理人員必備的技巧。      
      
  </p></li><li>
    <p style="margin-right: 20px;">tar :備份的基本程式。      
      
  </p></li><li>
    <p style="margin-right: 20px;">find : 幫忙找出特定條件的檔案。(例:24小時內修改過的檔案)   
   
      
  </p></li><li>
    <p style="margin-right: 20px;">awk : 網管必備技巧,利害的就用 PREL,我只會用它。      
      
  </p></li><li>
    <p style="margin-right: 20px;">mysqldump : mysql傾印資料庫的指令。     
     
</p></li></ol>     
     
<h2>三、實例說明</h2>     
     
<h3 style="margin-left: 20px; margin-right: 20px;">狀況一:</h3>   
   
<p style="margin-left: 20px; margin-right: 20px;">定期備份全校老師的檔案,以防老師誤刪檔案或目
錄,每天備份當日更動過的檔案(24小時內)。</p>   
   
<p style="margin-left: 20px; margin-right: 20px;">資料目錄: /home/cses<br>  
   
備份檔存放目錄: /mnt/backup&nbsp;</p>     
     
<ol><li>
    <h3>定期備份 (/mnt/backup/backup_week.sh)</h3>
    <table width="90%" border="1" bordercolor="#800000">     
      <tbody><tr>     
        <td width="100%"><b>#!/bin/sh<br>     
          ##<br>     
          ## 保留三個/home/cses/ 的原始備份檔<br>      
          ##<br>      
          mv /mnt/backup/cses-1.tar.gz /mnt/backup/cses-2.tar.gz<br>   
  
          mv /mnt/backup/cses.tar.gz /mnt/backup/cses-1.tar.gz<br>      
          tar czvf /mnt/backup/cses.tar.gz /home/cses<br>
          chmod 400 /mnt/backup/cses.tar.gz</b><br>   
          ---------------------說明--------------------<br>   
          其實倒數第二行就可以解決了,還好硬碟夠大,我就多放兩個完整備份檔,crontab      
          中設定每個星期天的凌晨4:30做備份的動作。chmod
          為的是讓其他人不會讀取到這個檔案。<br>   
          30 4 * * 0 /mnt/backup/backup_week.sh</td>     
      </tr>     
    </tbody></table>     
     
  </li><li>
    <h3>每日備份( /mnt/backup/backup_day.sh )</h3>
    <table width="90%" border="1" bordercolor="#800000">     
      <tbody><tr>     
        <td width="100%"><b>#!/bin/sh<br>     
          ##<br>     
          ## 每天備份24小時內更動過的檔案<br>      
          ##<br>      
          day=`date +%w`<br>      
          find  /home/cses/   -type f -ctime -1  -fprint
/mnt/backup/file_list<br>      
          tar  -czvf /mnt/backup/week-$day.tar.gz  -T
/mnt/backup/file_list</b><br>      
          ---------說明 -----------<br>     
          因為是每天,所以用 data +%w 取出星期代碼,<br>     
          用find 指令找出一天內(24小時)更動過的檔案。並且用-fprint      
          參數輸出到 /mnt/backup/file_list&nbsp;<br>     
          以 /mnt/backup/file_list 為範本,把檔案 tar 到 week-星期.tar.gz      
          的檔案中,crontab 設定<br>     
          0 4 * * * /mnt/backup/backup_day.sh </td>     
      </tr>     
    </tbody></table>     
     
  </li></ol>     
     
<p>  如此一來,每週一次完整的備份,每天備份24小時內的異動,萬一有同事誤刪了檔案或目錄就可以很快的救回來了。</p>   
<h2>狀況二、備份 資料庫</h2>   
<p>  其實這個部份和備份檔案差不多,以MySQL 為例,它本身所附的mysqldump     
就可以把資料庫整個匯出,而匯出的內容都是文字檔,所以在檔案權限上的設定或者內容的加密都是要注意的。</p>   
   
<p>  在MYSQL
中可能存放了好多個資料庫,日後也可能陸續增加,所以先建立一個所有資料庫的列表,備份的對象就是列表中的資料庫。</p>   
   
<ol><li>
    <h3>資料庫列表 (/mnt/backup/mysql/db.list)</h3>
    <table width="80%" border="1" bordercolor="#800000">   
      <tbody><tr>   
        <td width="100%">mysql<br>   
          test<br>   
          sfs<br>   
          horde<br>   
          imp</td>   
      </tr>   
    </tbody></table>   
  </li><li>   
    <h3 align="left">資料庫備份 ( /mnt/backup/backup_sql.sh)</h3>
    <table width="90%" border="1" bordercolor="#800000">   
      <tbody><tr>   
        <td width="100%"><font face="Bell MT">#!/bin/sh<br>  
          date=`date +%w`<br>   
          awk <font color="#ff0000">'</font>{ print <font color="#ff0000"> "</font>mysqldump -uroot -proot_password
          <font color="#ff0000">  "</font> $1 <font color="#ff0000"> "</font>
&gt;
          /mnt/backup/mysql/<font color="#ff0000">"</font>$1<font color="#ff0000">"</font>.sql.<font color="#800000">`</font>date
          +%w<font color="#800000">`</font><font color="#ff0000">"</font>
}<font color="#ff0000">'</font> /mnt/backup/mysql/db.list | /bin/sh<br>
   
          awk <font color="#ff0000">'</font>{ print <font color="#ff0000">"</font>chmod 400
          /mnt/backup/mysql/<font color="#ff0000">"</font>$1<font color="#ff0000">"</font>.sql.<font color="#000080">`</font>date
          +%w<font color="#000080">`</font><font color="#ff0000">"</font>
}<font color="#ff0000">'</font> /mnt/backup/mysql/db.list | /bin/sh</font><br>
   
          ----------------說明----------------------<br>   
          以上的程式是四行! 第三、四行都是以awk   
          為開頭,如果怕程式有錯,後面的 | /bin/sh   
          可以先省略,先看看有沒有錯誤,這時候因為沒有經過shell   
          處理,所以 `date +%w`   
          也不會被執行,仍是以字串的格式呈現。如下:<br>   
          mysqldump -uroot   mysql &gt; /var/lib/mysql/mysql.sql.`date
+%w`<br>   
          mysqldump -uroot   test &gt; /var/lib/mysql/test.sql.`date
+%w`<br>   
          chmod 400  /var/lib/mysql/mysql.sql.`date +%w`<br>   
          chmod 400  /var/lib/mysql/test.sql.`date +%w`
          <p>  會用 chmod 400 這行指令是為了保密,資料庫 DUMP   
          出來都是文字檔,小心一點總是必要的,另外,這個程式也是要保密的對象,因為它有   
          MYSQL&nbsp; root 的密碼,在我的實際運作上,/mnt/backup   
          的擁有者是 root , 屬性方面也是設成400,除了只讓 root   
          可以讀寫外,其他群組或人員一律不準。</p>
        </td>   
      </tr>   
    </tbody></table>   
  </li></ol>   
   
   
   
<h2>   
   
   
   
狀況三:檔案加密</h2>
<p style="margin-left: 20px; margin-right: 20px;">  上述的script   
和備份下來的資料應妥善保管,避免他人的下載或利用,在   
WINDOWS 的環境中,WINZIP 這類的壓縮工具都有   
加上密碼的功能,以防檔案遭到非法利用;但在 UNIX   
環境中,這類的軟體好像不多(應該說我不知道),還好,我在   
CNET 網站找到<b><a href="http://taiwan.cnet.com/download/linux/swinfo/0,2000033469,11005601s,00.htm?">Cruft
   
Data Encryption Utility</a></b> <!-- filename end --><!-- short description start -->
  
這個檔案加密的工具,以下就簡單的介紹安裝和使用方法:</p>
<ol><li>安裝:<br>
    和一般 *.TAR.GZ 的檔案一樣,下載、解開、進入目錄、make   
    、make install 。<br>  
    如裝完會產生兩個程式,<br>  
    keygen :先執行這個程式,它會在USER 的家目錄產生一個 .key   
    的檔案,加密、解密就靠這個檔的內容。<br>  
    crutf : 加、解密的主程式。</li><li>使用方法:<br>
    keygen 要第一個使用。以產生 .key 。<br>  
    crutf :<font size="4" color="#0000ff" face="Bell MT"><u>cruft infile
outfile&nbsp;</u></font>&nbsp; 或&nbsp;
    <font size="4" color="#0000ff" face="Bell MT"><u>cruft infile &gt;
outfile </u></font>  
    的方式都可以,它會自動判斷是否加密,如果infile   
    是正常檔案,outfile   
    就是加密過的,反之則會產生解密的檔案。</li><li>心得:<br>  
    一般USER 加密過的檔案,連root 也無法解開,因為 ~/.key   
    的內容不一樣,也許把 user&nbsp; ~/.key&nbsp; cp 到 /root   
    就可以解開了。<br>  
    不僅是文字檔,連 *.tar.gz 的檔案也可以。</li></ol>  
<p style="margin-left: 20px; margin-right: 20px;">  這一類的檔案應該不少,我有點偷懶,只到
CNET   
找,因為它有中文簡介,相信 <a href="http://freshmeat.net/">http://freshmeat.net/</a>&nbsp;&nbsp;
   
和 <a href="http://freshmeat.net/">http://sourceforge.net/</a>   
都有不少類似或更強大的工具,只是我沒找到而以,也希望網友可以提供意見。</p><br>
頁: [1]
查看完整版本: [轉貼]資料備份(Samba、Mysql)、加密