萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 使用backupninja備份Debian系統的教程

使用backupninja備份Debian系統的教程

   小心謹慎或災難體驗會讓每一個系統管理都認識到頻繁的系統備份的重要性。你可以通過編寫管用的舊式 shell 腳本,或使用一個(或幾個)適合這項工作的備份工具來完成備份任務。因此,當你要實施一個備份解決方案時,你了解的備份工具越多,你做出的決策就會越明智。

  在這篇文章中,我們將為你介紹 backupninja ,這是一個輕量且易於配置的系統備份工具。在諸如 rdiff-backup, duplicity, mysqlhotcopy 和 mysqldump 等程序的幫助下, Backupninja 可以提供常用的備份功能,如執行遠程的、安全的和增量式的文件系統備份,加密備份以及 MySQL/MariaDB 數據庫備份。你可以選擇性地開啟使用 Email 狀態報告功能,也可以對一般的硬件和系統的信息進行備份。 backupninja 的一個關鍵功能是它擁有一個內建的基於控制台的向導程序(被稱為 ninjahelper),而後者允許你為不同的備份情景輕松地創建配置文件。

  如果非要說的話,backupninja 的缺點是:為了充分使用其所有的功能,它要求安裝一些其他“助手”程序。盡管 backupninja 有針對基於 Red Hat(紅帽)的發行版本的 RPM 安裝包,但 backupninja 針對 Debian 及其衍生發行版本的依賴進行了優化。所以不建議在基於 Red Hat 的系統上嘗試 backupninja 。

  在這篇教程中,我們將介紹如何在基於 Debian 的發行版本上安裝 backupninja 。

  安裝 Backupninja

  以 root 賬戶來運行下面的命令:

  代碼如下:

  # aptitude install backupninja

  在安裝的過程中,有幾個文件和目錄將被創建:

  /usr/sbin/backupninja 是個 bash shell 的主腳本;

  /etc/cron.d/backupninja, 默認情況下,設置 cron 任務來每隔一個小時運行上面的主腳本;

  /etc/logrotate.d/backupninja 截斷由 backupninja 程序產生的日志;

  /etc/backup.d/ 是備份操作的配置文件駐留的目錄;

  /etc/backupninja.conf 是包含一般選項的主配置文件。這個文件帶有良好的注釋且詳細解釋了每個選項的含義;

  /usr/share/backupninja 是那些 backupninja 所使用的腳本所處的目錄。這些腳本文件負責執行實際的工作。在這個目錄中,你還可以找到 .helper 文件,它們可以被用來配置和設定 ninjahelper 的菜單;

  /usr/share/doc/backupninja/examples 含有操作配置文件(即通過 ninjahelper 產生的文件)的模板。

  首次運行 Ninjahelper

  當我們嘗試啟動 ninjahelper 時,我們可以看到可能需要一個內部依賴程序。假如系統進行了提示,請輸入 “yes” 並敲下回車鍵來安裝 dialog(一個用於從 shell 腳本中顯示友好對話框的工具)。

201568180112850.jpg (640×87)

  當你在鍵入 yes 後再敲回車鍵時,backupninja 將會安裝 dialog,一旦安裝完成,將呈現出下面的截屏:

201568180142082.jpg (640×373)

  案例 1: 備份硬件和系統信息

  在啟動了 ninjahelper 之後,我們將創建一個新的備份操作:

201568180202609.jpg (640×215)

  如果必要的助手程序沒有被安裝,下面的截屏將會呈現在我們眼前。假如這些軟件包已經在你的系統上安裝了,請跳過這一步。

201568180225974.jpg (640×249)

  接下來的一步需要你選取相關條目來作為此次備份任務的一部分。前四個條目已經默認被選上了,但你可以通過在條目上按空格鍵來撤消選擇。

201568180336339.jpg (631×358)

  一旦你完成了上面的步驟,按 OK 選項來繼續。接著你將能夠選擇是願意使用默認的配置文件(/etc/backup.d/10.sys)來完成這次備份操作,還是創建一個新的配置文件。若為後者,一個含有與默認配置文件內容相同的文件將會在相同的目錄下被創建,但它被命名為 11.sys,後續的備份操作將會創建類似的文件(注:只不過命名的序號不同)。需要說明的是一旦這個新的配置文件被創建,你便可以使用你喜愛的文本編輯器來編輯該文件。

201568180354468.png (494×327)

  案例 2: 一個遠程目錄的增量式 Rsync 拉取備份

  正如你最有可能知道的那樣, rsync 被廣泛地用於通過網絡同步文件或文件夾。在接下來的例子中,我們將討論一個使用硬鏈接來為一個遠程目錄做增量式拉取備份的方法,它被用來保存歷史數據以及在我們本地的文件服務器中恢復這些歷史數據。這個方法將幫助我們節省空間並增強位於服務器端的安全性。

  步驟 1:編寫一個帶有如下內容的自定義腳本,放在 /etc/backup.d,並將它的權限設置為 600 。需要說明的是,除了一般的配置文件,這個目錄可能還包含當 backupninja 執行時你想運行的一些腳本文件,它們可以發揮出位於主配置文件中的變量的優勢。

  代碼如下:

  # REMOTE USER

  user=root

  # REMOTE HOST

  host=dev1

  # REMOTE DIRECTORY

  remotedir=/home/gacanepa/

  # LOCAL DIRECTORY

  localdir=/home/gacanepa/backup.0

  # LOCAL DIRECTORY WHERE PREVIOUS BACKUP WAS STORED

  localdirold=/home/gacanepa/backup.1

  mv $localdir $localdirold

  # RSYNC

  rsync -av --delete --recursive --link-dest=$localdirold $user@$host:$remotedir $localdir

  在上面的配置中, rsync 的 ‘--link-dest’ 選項的作用是為位於 $localdir-old 目錄中那些沒有改變的文件(包含所有屬性) 硬鏈接到目標目錄($localdir)。

  步驟 2:在 backupninja 第一次運行之前,上層目錄(這個例子中指的是 /home/gacanepa) 是空的。第一次我們執行下面的命令:

  代碼如下:

  # backupninja -n

  backup.0 目錄就被創建了,並在接下來的過程中,它的名稱將會被更改為 backup.1。

  當我們第二次運行 backupninja 時, backup.0 將會被重新創建,而 backup.1 保持不動。

201568180420823.jpg (492×217)

  步驟 3: 確保 backup.1 裡面的文件硬鏈接到 backup.0 裡的文件,我們可以通過比較文件的 inode(i 節點)數和目錄的大小來達到此目的。

201568180440627.jpg (310×101)

  總結

  Backupninja 不僅是一個經典的備份工具,它也是一個易於配置的實用程序。你可以通過編寫你自己的控制腳本,用放在 /etc.backup.d 中的不同的配置文件來運行 backupninja 。甚至你還可以為 ninjahelper 編寫助手程序,並將其包括在 ninjahelper 的主界面上。

  例如,假如你在 /usr/share/backupninja目錄中創建了一個名為 xmodulo 的控制腳本,它將自動運行那些位於 /etc/backup.d 目錄中以 .xmodulo 為後綴的每個文件。如果你決定添加你的 xmodulo 控制腳本到 ninjahelper 中, 你可以編寫相應的助手程序,即 xmodulo.helper 。另外,假如你想 讓 backupninja 運行其它的腳本,只需把它添加到 /etc/backup.d 目錄中就可以了。

copyright © 萬盛學電腦網 all rights reserved