Keepass 2.x 之 同步與觸發器


同步

之前用的 Keepass 1.x, 要實現工作電腦和個人電腦上的數據庫文件同步,使用的是第三方的網盤同步。但有個問題就是,個人不習慣設置同步網盤開機啟動,所以有時候工作電腦上的改動還沒有同步上傳、個人電腦上又修改了數據庫文件,這樣就會產生沖突。之前也看到有第三方插件可以提供同步功能,不過沒有去嘗試使用過。

現在,Keepass 2.x 提供了對同步功能的原生支持,支持“與文件同步”或者“與 URL 同步”。其中,URL 同步測試支持 FTP 以及 HTTP/WebDAV 協議。

image

這里的同步方法有兩種:

一種是我們通常使用的,數據庫文件位於本地磁盤上,需要同步時選擇菜單“文件->同步”,再選擇需要同步的本地或 URL 文件。需要注意的是,第一次同步之前需要先將你的數據庫文件復制到需要同步的位置,因為選擇同步文件時需要指定待同步文件的完整路徑,如:ftp://xxx.edu.cn/KeepassSync/MyBase.kdbx.

另外一種方式,則是直接打開 URL 數據庫文件使用。

image

這樣我們每次改動后,選擇保存(注意不是另存為),都會自動將改動保存到打開的 URL 文件中。

 

以上就是同步的基本用法,基本是靠手動完成同步操作。如果想偷懶,讓軟件更加自動化的同步操作,則需要使用到 Keepass 2.x 的新功能:觸發器

觸發器

觸發器和同步功能一樣,也是 Keepass 2.x 的新增功能,用它來輔助實現自動同步操作,簡直就是絕配。

觸發器位於“工具”菜單下,點擊后彈出“觸發器”窗口,這里有一個“啟用觸發系統”復選框,用來控制所有的觸發器是否啟用。然后點擊“添加”按鈕,出現“添加觸發器”窗口。

image

在“屬性”選項卡中,有三個復選框:

“啟用”:控制當前觸發器是否啟用;

“啟動時打開”:控制 Keepass 軟件啟動后該觸發器是否打開,這個主要用於其他觸發器來觸發它的開關狀態(后面會講到)。只有之前說到的“啟用觸發系統”以及上面的“啟用”復選框都選中,並且觸發器打開時,該觸發器才有效。

“執行動作后關閉”:容易理解,就是該觸發器只執行一次,當然同樣可以通過其他觸發器再把它打開。

另外,需要注意的是,觸發器是屬於軟件層面的,而不是數據庫下的屬性,即同步時不會同步觸發器。

還有,在上面所說的“啟動時打開”復選框,它下面說明是“觸發器將在 Keepass 啟動時打開”。這樣,如果你同時選擇了“執行動作后關閉”復選框,或者通過其他觸發器將其關閉。則當你只關閉了數據庫(注意 Keepass 軟件沒有關閉),然后重新打開數據庫時,該觸發器不會打開。不過這種情況很少遇到,一般我們使用都是只用一個數據庫文件,關閉時也是直接退出軟件。

 

在“事件”選項卡下,點擊“添加”按鈕,彈出“事件”添加窗口:

image

可以看到可供選擇的觸發事件很多,並且如果選擇多個事件后,只要有一個事件發生,則該觸發器就會被觸發。

 

在“條件”選項卡下,同樣點擊“添加”按鈕,彈出“條件”添加窗口:

image

其中可供選擇的條件如下:

image

注意如果選擇多個“條件”的話,只有當所有的條件都滿足時,該觸發器才會進行接下來指定的“動作”。

 

在“動作”選項卡下,點擊“添加”按鈕,彈出“動作”添加窗口:

image

可以選擇的動作也很多:

image

如果選擇多個動作,則這些動作會按先后順序進行。動作順序可以在“動作”選項卡中調整。

按照官方幫助中的說法,如果某個動作無法進行下去,則其下面的動作也不再進行。

Actions are performed consecutively; if one action fails, typically the execution of the event is aborted (i.e. all following actions aren't performed).

但實際操作發現,比如設定同步動作,一個同步到 URL 文件,一個同步到本地磁盤其他地方,並且同步到 URL 文件的動作在前。斷網情況下,同步到 URL 文件動作會彈出錯誤提示,但同步到本地磁盤還能繼續成功運行。

因此,個人理解是如果動作之間沒有關聯的話,即使前面的動作無法進行,也不影響后續動作。當然,這里還是建議把同步到本地磁盤這一動作放到前面,畢竟一般情況下它都不會出現問題的。

注意無限循環問題:

使用觸發器時需要注意的一個問題就是,可能一個觸發器會觸發自身,這樣程序就會陷入無限循環之中。比如,之前自己設計一個“保存后同步”的觸發器,由於軟件的同步機制相當於保存,因此就出現了無限循環問題。官方幫助頁面有這方面的詳細說明和解決辦法,部分翻譯如下:

解決思路:在觸發器執行我們想要完成的動作之前先關閉自己,然后再執行指定的動作,執行完后再打開自身。

解決步驟:

1. 首先在“動作”窗口選擇動作:“更改觸發器 開/關 狀態”

image

觸發器名稱留空,表示自身,新狀態改為“關閉”。

2. 再自行添加自己需要的動作;

3. 同1,只是新狀態改為“打開”。

示例

保存后同步

  1. “屬性”選項卡,命名該觸發器,如 SavedSync.(注意,后面動作選擇“更改觸發器 開/關 狀態”時觸發器名稱只能手動輸入,無法選擇,所以這里命名還是從簡,具體描述可以寫到下面的注釋欄。)同時勾選“啟用”和“啟動時打開”復選框。
  2. “事件”選項卡,添加事件,選擇“已保存數據庫文件”,下面的文件/URL - 比較和過濾器可以無視。不過如果有多個數據庫文件需要同步,則可以根據待保存的數據庫文件名設定后續同步動作。這里我的設置如下:

    image

  3. “條件”選項卡不加入任何條件。你也可以選擇同步到 URL 文件時選擇條件“遠程主機可以連接(ping)”,這樣只有當 URL 文件可以訪問時才同步。不過我傾向於不加入這個條件,這樣即使后面無法完成同步操作,也會有彈窗提示,讓我們能更清楚當前的同步狀態。
  4. 最后“動作”選項卡就需要注意前面說到的無限循環問題了。

    首先關閉當前觸發器;

    然后添加動作“與一個文件/URL 同步當前數據庫”,在下面輸入 “文件/URL” 地址,如果是 URL 文件,下面還要輸入 IO 連接用戶名和密碼;

    最后打開當前觸發器。

打開數據庫后同步

這個觸發器的操作和上面的基本相同,不同點如下:

  • “事件”選項卡中,添加的事件選擇“已打開的數據庫文件”。
  • “動作”選項卡中,關閉和打開的觸發器名稱要寫上面的“保存后同步”觸發器名稱。以為同步也是一種保存,這樣就不會打開數據庫同步后,又觸發了保存同步。

官方幫助里還提供了更多的用法示例,可以前去看看:http://keepass.info/help/kb/trigger_examples.html.

WebDav 同步測試

由於學校里提供了個人的 FTP,因此我現在是將個人數據庫同步到該 FTP 上。一般沒有自己 FTP 的,就得找一些支持 FTP 或 WebDav 協議的網盤了。

為了測試該功能,在網上找到了一個支持 WebDav 協議的網盤:Box. 注冊后通過地址 https://www.box.com/dav/ 就能訪問到自己的網盤文件了。

不過測試雖然可用,但速度較慢,期間還造成 Keepass 軟件未響應的情況,好在半分多鍾后恢復並同步成功。而且由於是國外的網盤,不確保以后能否訪問(寫作此文時 Dropbox 主頁已無法打開)。

所以,大家還是要慎重考慮同步的地方,畢竟這個數據庫要是丟了可真是損失慘重。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM