歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 如何進行 zope 數據的自動備份?看看這裡就知道了

如何進行 zope 數據的自動備份?看看這裡就知道了

日期:2017/2/27 14:29:17   编辑:更多Linux
  備份目標 因為 zope 的大部分數據都保存在 zope/var/Data.fs 這個文件裡,所以它就是我們的備份的目標了。當然我們不希望備份時把 zope 服務停掉,但對於一個 zope 服務器來說,運行中這個數據文件是隨時會被改寫的。考慮到這個文件尺寸的規模,如果我們硬來的話,很可能在備份的中途 tar 就會罷工,告訴我們這個文件剛剛被修改了。 所以,一個理智的辦法是備份之前對 zope 數據文件進行 pack。然後,只要備份 pack 出來的 Data.fs.old 文件就可以了 呵呵,是不是很聰明?但現在問題來了。 Pack 一般我們是在 ZMI 中進行 pack 的,並且這個操作是需要管理員的身份才能進行的。如何讓這一切自動的、安全的進行呢?我看那個管理員也不想天天登到 ZMI 裡做 pack 這種無聊的工作。 既然 pack 是在 zope 裡完成的,必然有下達 pack 指令的途徑,這就是 Control_Panel.Database.manage_pack。如果你試試 : wget -q -o /dev/null --http-user=manager --http-passwd=passWord \ 'http://localhost:8080/Control_Panel/Database/manage_pack?days:float=0' 就知道我所言非虛。這下好了,pack 終於可以自動化進行了,我們現在可以把這命令放到 cron 裡了。但還有一點要注意呀,你把 zope manager 的口令都搞到這裡了,萬一……如果……被人瞟到一眼……是不是很可怕。千萬不要把這關鍵的口令用明碼寫到任何地方。 為了安全 那麼,我們應該怎麼做呢?最好是用一個無關痛癢的用戶來完成這個任務,即使這個用戶被人竊取,也不能威脅到 zope 系統的安全。這就要用到 proxy 了。 現在我們一步步來: 1. 在 zope root folder 裡建立 zopepack 目錄,記得選上"Create user folder"; 2. 到 zopepack 目錄,進入 acl_users,增加一個普通用戶,比如叫packonly,記著不要給它分配任何 role; 3. 到 zopepack 目錄,建立一個名叫 zopepack 的 DTML Method,填入如下代碼,它負責呼叫 pack 指令 : <dtml-if eXPr="REQUEST.has_key('days')"> <dtml-call expr="Control_Panel.Database.manage_pack(days=REQUEST['days'])"> <dtml-else> <dtml-call expr="Control_Panel.Database.manage_pack()"> </dtml-if> <dtml-var "ZopeTime()">, pack OK. 4. 這步比較重要,在 zopepack 的編輯頁面,點擊 Proxy 標簽,選上 Manager 這一項,Save Changes; 5. OK,准備就緒。 現在,只要執行 : wget -q -o /dev/null 'http://packonly:packonly@localhost:8080/zopepack/zopepack' 就可以了(當然,上面的用戶名和密碼要填入你自己建立的那個用戶的)。 讓一切自動吧! 剩下的簡單了,增加一個啟動備份的腳本,讓 root 或者 zope 用戶自動執行就好了。這是我的 backup-zopefs.sh,僅供參考 : #!/bin/sh # At first, pack zope data.fs wget -q -o /dev/null 'http://packonly:packonly@localhost:8080/zopepack/zopepack' cd /usr/local/zope/var TARGET="/home/zope/backup/zopefs-`uname -n`-`date +%Y%m%d`.tgz" tar zcf $TARGET Data.fs.old Data.fs.in Data.fs.index chown zope:zope $TARGET # 下面可以把 tgz 文件拷貝到什麼地方 # cp $TARGET backupDevice ... 執行 crontab -e,設定好執行的時間(當然是機器比較空閒的時間,雖然你知道,我還是忍不住多嘴 : # Store Zope data files # Weekend, 8 pm. 0 20 * * 5 /root/backup-raccoon-zopefs.sh NOTE


只在 Linux + zope 2.6 中測試過,只測試過單 Data.fs 的系統。 上面東西的zexp、shell script之類文件的壓縮包: http://www.linuxforum.net/forum/files/424347-zopebackup.tgz



Copyright © Linux教程網 All Rights Reserved