如何使用 backupninja 來備份 Debian 系統
(題圖來自:blogspot.com)
如果非要說的話,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 腳本中顯示友好對話框的工具)。
當你在鍵入 yes 後再敲回車鍵時,backupninja 將會安裝 dialog,一旦安裝完成,將呈現出下面的截屏:
案例 1: 備份硬體和系統信息
在啟動了 ninjahelper 之後,我們將創建一個新的備份操作:
如果必要的助手程序沒有被安裝,下面的截屏將會呈現在我們眼前。假如這些軟體包已經在你的系統上安裝了,請跳過這一步。
接下來的一步需要你選取相關條目來作為此次備份任務的一部分。前四個條目已經默認被選上了,但你可以通過在條目上按空格鍵來撤消選擇。
一旦你完成了上面的步驟,按 OK 選項來繼續。接著你將能夠選擇是願意使用默認的配置文件(/etc/backup.d/10.sys)來完成這次備份操作,還是創建一個新的配置文件。若為後者,一個含有與默認配置文件內容相同的文件將會在相同的目錄下被創建,但它被命名為 11.sys,後續的備份操作將會創建類似的文件(註:只不過命名的序號不同)。需要說明的是一旦這個新的配置文件被創建,你便可以使用你喜愛的文本編輯器來編輯該文件。
案例 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 保持不動。
步驟 3: 確保 backup.1 裡面的文件硬鏈接到 backup.0 里的文件,我們可以通過比較文件的 inode(i 節點)數和目錄的大小來達到此目的。
總結
Backupninja 不僅是一個經典的備份工具,它也是一個易於配置的實用程序。你可以通過編寫你自己的控制腳本,用放在 /etc.backup.d
中的不同的配置文件來運行 backupninja 。甚至你還可以為 ninjahelper 編寫助手程序,並將其包括在 ninjahelper 的主界面上。
例如,假如你在 /usr/share/backupninja
目錄中創建了一個名為 xmodulo 的控制腳本,它將自動運行那些位於 /etc/backup.d
目錄中以 .xmodulo 為後綴的每個文件。如果你決定添加你的 xmodulo 控制腳本到 ninjahelper 中, 你可以編寫相應的助手程序,即 xmodulo.helper 。另外,假如你想 讓 backupninja 運行其它的腳本,只需把它添加到 /etc/backup.d
目錄中就可以了。
歡迎使用下面的評論框來留下你的評論、問題或建議。聽到你的回應將會使我們很高興。
via: http://xmodulo.com/backup-debian-system-backupninja.html
作者:Gabriel Cánepa 譯者:FSSlc 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive