UNIX管道和重定向功能在系統備份中的妙用(轉)
UNIX管道和重定向功能在系統備份中的妙用(轉)[@more@]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*/
管道是從一個程式程式向另一個程式程式單向傳送資訊的技術。與其它形式的程式間通訊,如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*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-945762/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux中重定向和管道介紹Linux
- Linux的管道機制和重定向Linux
- 在Linux中,管道(pipe)和重定向(redirection)的是什麼?Linux
- Jtti:CentOS系統中如何進行系統備份和恢復?JttiCentOS
- MySQL的冷備份和熱備份概念理解(轉)MySql
- Springmvc中轉發和重定向SpringMVC
- 輸出重定向 管道
- 在Linux中,如何配置和管理系統備份和恢復策略?Linux
- 在Linux中,如何建立檔案系統的備份?Linux
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- Linux 系統的備份恢復Linux
- 轉發和重定向
- 實戰:xfs檔案系統的備份和恢復
- 管道系統
- windows10如何備份系統_windows10製作系統備份Windows
- 如何備份win10系統映象_備份win10系統映象的步驟Win10
- Linux大檔案重定向和管道的效率對比總結Linux
- 介紹 Linux 中的管道和命名管道Linux
- Zsh 開發指南(第十三篇 管道和重定向)
- 轉發和重定向的區別?
- Linux 系統的備份與恢復Linux
- MySQL中如何選擇合適的備份策略和備份工具MySql
- Linux中XFS檔案系統的備份,恢復,修復Linux
- 如何區分Linux和Unix?作業系統!Linux作業系統
- RMAN備份恢復典型案例——RMAN備份&系統變慢
- 如何備份win10_win10系統怎麼備份Win10
- 檔案的基本管理和XFS檔案系統備份恢復
- Unix系統中的dot命令的使用方法詳解
- win10系統怎麼備份到u盤_win10u盤備份系統的方法Win10
- Windows故障轉移群集(WSFC)的備份和恢復Windows
- 轉發和重定向的過程和區別
- Ghost備份及還原系統
- 資料統計分析功能在CRM軟體系統中的作用
- Spring MVC 轉發和重定向SpringMVC
- win10系統如何備份檔案 win10系統備份檔案在哪裡Win10
- 2.6.1 CDB中備份和恢復的概述
- 管道符、重定向與環境變數變數
- ORACLE備份策略(轉)Oracle
- 轉到MariaDB備份