[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
UNIX管道功能在系統備份中的妙用
本文出自:http://www.ccidnet.com/ 作者: 李炯 (2002-01-07 07:10:00)
http://tech.cn.tom.com2001年10月29日來源:賽迪網


UNIX命令有三個有效的數據流:標準輸入,標準輸出,標準錯誤。

管道是從一個程序進程向另一個程序進程單向傳送信息的技術。與其它形式的進程間通
訊,如IPC、MESSAGE PASSING、SOCKET等不同,管道特點是單向的。通常,管道把一個
進程的輸出傳給另一進程作為輸入。在接受進程接收信息前,系統臨時保留管道信息。

UNIX shell中,管道在命令行中由一個豎槓(|)表示。管道左邊的命令的標準輸出作
為管道右邊命令的標準輸入。

UNIX的輸入和輸出重定向可以將命令的標準輸入輸出,從鍵盤和終端轉移定向到其他的
設備文件。

我們可以利用管道和輸入輸出重定向功能,從而在UNIX系統中巧妙地實現一些功能,舉
以下三例說明(假設用戶均有相應的權限)。

I. 主機tom沒有磁帶機,而主機jerry有磁帶機。

我們任務是要將tom的數據通過jerry備份到磁帶上。
  假設我們要用tar命令,將/dir目錄備份到磁帶上。
  首先,在tom上修改文件/etc/hosts,加入jerry的IP地址:
  192.0.0.2 jerry
  然,ping jerry,看網絡是否通暢。
  修改tom的.rhosts,加入下行:
  jerry
  使jerry為tom的信任主機。
  現在,在jerry上,rlogin tom,正常情況下,不需要口令,應能登錄到tom機上。
  在jerry上,運行:
  rsh tom "tar cvf - /dir" > /dev/rmt0h

其中,tar cvf - /dir 是將/dir拷貝到標準輸出,然再到重定向到主機jerry的磁
帶機上,完成備份。

II. 如何實現多台主機的磁帶機同時備份,加快備份速度。

隨著信息化進程的加快,不少企業從手工操作發展到利用信息技術,來提高生產率,企
業也積累了大量的數據,其中不少數據庫要求7x24小時運轉的。

數據庫的備份過程,即使不停機也會降低服務器的性能,盡量縮短備份時間窗的好處是
顯而易見的。
但是一台UNIX主機一般只配置一台磁帶機。假設我們有另外一台帶磁帶機的UNIX主機可
供利用,我們可以利用兩台磁帶機同時工作加快備份時間。

假設有ORACLE數據庫運行在主機tom上,該數據庫有四個各為2GB的數據文件:

/dev/volume1
  /dev/volume2
  /dev/volume3
  /dev/volume4

每個數據文件備份到磁帶上需要15分鐘,如果利用tom自帶磁帶機備份需花掉1小時。
我們有jerry主機帶磁帶機,且空閑。 以下操作利用管道技術,縮短備份時間。

第一步,將jerry做成tom的信任主機,方法同上。

第二步,將備份任務分為兩組,volume1,volume2在tom上備份,volume3,volume4在
jerry上備份。
在tom上運行:

dd if=/dev/volume1 of=/dev/rmt0
  dd if=/dev/volume2 of=/dev/rmt0

在jerry上運行:

rsh tom "dd if=/dev/volume3" |dd of=/dev/rmt0
  rsh tom "dd if=/dev/volume4" |dd of=/dev/rmt0

通過上述辦法,可將備份時間縮短一半。如果有更多的主機加入備份工作,在充分利用
網絡帶寬的情況下,效果將更加顯。

III. 解決磁盤空間不足,如何使應用程序產生數據,不經過中間過程,直接生成壓縮
文件。

以ORACLE數據庫邏輯備份工具exp/imp為例。
ORACLE數據庫用exp備份出來的數據,經過壓縮,如compress壓縮,可節約一半左右的磁
盤空間。但要經過中間過程,在壓縮中需要原文件大小的約一半的緩沖空間。利用管道
可以直接生成最終的壓縮文件,省略中間過程。

常規的exp命令運行如下:

exp system/manager@testdb file=expdat.dmpfull=y

運用管道,如下:

mknod exp_pipe p /* 生成命名管道 */
  exp system/manager@testdb file=./exp_pipefull=y /* 將備份數據送往管道 */
  compress exp_pipe > expfull.dmp.Z /* 生成壓縮備份文件*/


恢復操作也可以利用管道,跳過將文件解壓縮,生成原始文件的過程,如下:

mknod imp_pipe p /* 生成相應的命名管道 */
  uncompress -c expfull.dmp.Z > imp_pipe/* 將解壓縮數據送入管道 */
  imp system/manager@testdb file=./imp_pipefromuser=scott \
  touser=scott /* 將管道數據導入數據庫testdb*/


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
用PHP實現XML備份Mysql數據庫 (2002-01-31 10:41:13)
HP-UX系統備份與恢復全功略 (2002-01-29 20:03:38)
雙機(多機)自動互備份方案 (2002-01-19 08:30:00)
備份和修復Linux LILO指南 (2002-01-08 08:10:00)
UNIX管道功能在系統備份中的妙用 (2002-01-07 07:10:00)
Sun Solaris 用戶手冊 -- 九. 數據備份和傳輸工具 (2001-10-04 08:00:00)
中文man手冊:smbtar - 直接備份SMB/CIFS共享資源到UNIX磁帶設備的shell腳本 (2001-09-23 07:05:01)
用rsync對網站進行鏡像備份 (2001-09-08 13:05:00)
備份Cisco路由器用戶配置 (2001-08-17 15:00:01)
AIX的系統備份和恢復   (2001-08-08 08:00:00)

===更多相關===
 

★  樊強制作 歡迎分享  ★