marvinweber / kpsimplebackup Goto Github PK
View Code? Open in Web Editor NEWKPSimpleBackup - Backup Plugin for KeePass2 (compatible with IOProtocolExt)
License: GNU General Public License v3.0
KPSimpleBackup - Backup Plugin for KeePass2 (compatible with IOProtocolExt)
License: GNU General Public License v3.0
When configured to save to a Samba share, I always get:
[4/13/2021 8:10:31 AM] [KPSimpleBackup] [AdditionalInfo] Exception: System.Net.WebException: Could not find a part of the path 'U:\Documents\filed\keys backup\keepass\abc_2021.04.13_8.10.31.kdbx.tmp'. ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'U:\Documents\filed\keys backup\keepass\abc_2021.04.13_8.10.31.kdbx.tmp'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing)
at System.Net.FileWebRequest.GetRequestStreamCallback(Object state)
--- End of inner exception stack trace ---
at System.Net.WebClient.OpenWrite(Uri address, String method)
at KeePassLib.Serialization.IOConnection.OpenWrite(IOConnectionInfo ioc)
at KeePassLib.PwDatabase.Save(IStatusLogger slLogger)
at KeePassLib.PwDatabase.SaveAs(IOConnectionInfo ioConnection, Boolean bIsPrimaryNow, IStatusLogger slLogger)
at KPSimpleBackup.BackupManager.SavePwDatabaseToPath(IOConnectionInfo fileInfo)
at KPSimpleBackup.BasicBackupManager.Backup()
at KPSimpleBackup.BackupManager.Run()
The first sentence
"This is a simple KeePass Plugin that saves a backup of your Password-Database to a backup location..."
would be better if it's:
"This is a simple KeePass Plugin that saves a backup of your Password-Database to several pre-defined backup locations..."
I think this is a very good selling point to a potential new user who's reading the README. Just earlier today when I recommended this plugin to a guy the first question he asked was "only 1 backup location?" In fact, KPSimpleBackup is capable to save backups to several locations, and that's the reason I love to use it. I have 4 locations to save database backups: a different folder (than the default working database folder) on my SSD drive, a folder on an SD card inserted on my computer, and 2 folders on my 2 samba servers.
Thanks for the very nice plugin.
I use the long term backup feature provided by KPSimpleBackup but rely on KeePass synchronization to a cloud drive for "continuous" backup. I would prefer to avoid the extra overhead incurred by the Simple Backup that occurs with each KeePass save event, and would rather defer these backups to a more convenient time, such as when KeePass has been inactive for a while.
Would it be possible to:
ToDo: Evaluate, if this is possible (similar to the option to backup db only on close)
Setup with MkDocs (MkMaterial), GitHub Actions, etc.
Version 1.3
When using a relative path, it's converted to an absolute path based on the directory of the KeePass binary.
I'd expect it to be relative to the database file, as I want to save a copy next to the original file and not in the directory where KeePass is installed to.
Keep weekly / monthly / yearly older backups (no matter if backup-limit is reached)
Keep the following types of backup:
This feature should be enabled (and disabled) in the advanced settings.
I would however give a suggestion
a separate line of backups that only save if its a new week or month
So you would have the normal 20 backups tha is everytime you save.
but also lets say 4 that each is one week/month in between.
This would help agiant saturating the normal number of backups during time with a lot of changes and then suddenly realise you delete once a bit earlier.Example
Database_Week05
Database_Week06
Database_Week07
Databsae_Week08
originally posted by @SvenBent in #5 (comment)
This is more a clarification question.......
I have the "Backup KeePass configuration file" option enabled and using latest Keepass (2.54) Portable.
Looking in the session log of KPSimpleBackup I see that there's an attempt to search for KeePass.config.xml in these 2 directories:
C:\Users\UserName\AppData\Roaming\KeePass
C:\Windows\system32\
First: Is this correct?
Second: Why not include the Portable directory? Which would make more sense.
TBD
Hi,
I don't understand how to set my relative path, i got into error with this
.\Sauvegardes
=> no backup
.\Sauvegardes\
=> partial backup with errors
Would you give me some explanations regarding the log please?
[09/07/2021 10:24:47] [KPSimpleBackup] [Info] KPSimpleBackup: Backup started...
[09/07/2021 10:24:47] [KPSimpleBackup] [Info] START BackupManager: BasicBackup for database: Keepass2
[09/07/2021 10:24:47] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:24:47] [KPSimpleBackup] [Info] Save database to: file:///K:\Keepass\Sauvegardes\Keepass_20210709_102447.kdbx
[09/07/2021 10:24:48] [KPSimpleBackup] [AdditionalInfo] BackupManager (BasicBackup) finished with warnings!
[09/07/2021 10:24:48] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.IOException: Un périphérique qui n’existe pas a été spécifié.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
à System.Net.FileWebStream.Write(Byte[] buffer, Int32 offset, Int32 size)
à KeePassLib.Serialization.HmacBlockStream.WriteSafeBlock()
à KeePassLib.Serialization.HmacBlockStream.Write(Byte[] pbBuffer, Int32 iOffset, Int32 nCount)
à System.Security.Cryptography.CryptoStream.Write(Byte[] buffer, Int32 offset, Int32 count)
à KeePassLib.Utility.MemUtil.Write(Stream s, Byte[] pbData)
à KeePassLib.Serialization.KdbxFile.WriteInnerHeader(Stream s)
à KeePassLib.Serialization.KdbxFile.Save(Stream sSaveTo, PwGroup pgDataSource, KdbxFormat fmt, IStatusLogger slLogger)
à KeePassLib.PwDatabase.Save(IStatusLogger slLogger)
à KeePassLib.PwDatabase.SaveAs(IOConnectionInfo ioConnection, Boolean bIsPrimaryNow, IStatusLogger slLogger)
à KPSimpleBackup.BackupManager.SavePwDatabaseToPath(IOConnectionInfo fileInfo)
à KPSimpleBackup.BasicBackupManager.Backup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:24:48] [KPSimpleBackup] [Info] FINISHED BackupManager: BasicBackup
[09/07/2021 10:24:48] [KPSimpleBackup] [Info] START BackupManager: LongTermBackup for database: Keepass2
[09/07/2021 10:24:48] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:24:48] [KPSimpleBackup] [Info] Save database to: file:///C:\Users\leguillou-g\AppData\Local\Temp\opjbuvcw.nau.kdbx
[09/07/2021 10:24:50] [KPSimpleBackup] [Info] Copy database to: file:///K:\Keepass\Sauvegardes\Keepass_long-term-backups/weekly/Keepass_2021-27.kdbx (from: file:///C:\Users\leguillou-g\AppData\Local\Temp\opjbuvcw.nau.kdbx)
[09/07/2021 10:24:50] [KPSimpleBackup] [AdditionalInfo] BackupManager (LongTermBackup) finished with warnings!
[09/07/2021 10:24:50] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.DirectoryNotFoundException: Impossible de trouver une partie du chemin d'accès 'K:\Keepass\Sauvegardes\Keepass_long-term-backups\weekly'.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
à System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
à Microsoft.VisualBasic.FileIO.FileSystem.CopyOrMoveFile(CopyOrMove operation, String sourceFileName, String destinationFileName, Boolean overwrite, UIOptionInternal showUI, UICancelOption onUserCancel)
à KPSimpleBackup.BackupManager.CopyPwDatabaseFileToPath(String toPath, Boolean overwrite)
à KPSimpleBackup.LongTermBackupManager.Backup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:24:50] [KPSimpleBackup] [Info] FINISHED BackupManager: LongTermBackup
[09/07/2021 10:24:50] [KPSimpleBackup] [Info] START BackupManager: KeePassConfigBackup for database: Keepass2
[09/07/2021 10:24:50] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:24:50] [KPSimpleBackup] [Error] Could not create backup directory!
[09/07/2021 10:24:50] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.DirectoryNotFoundException: Impossible de trouver une partie du chemin d'accès 'K:\Keepass\Sauvegardes\'.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
à System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
à KPSimpleBackup.KPConfigBackupManager.PreBackup()
[09/07/2021 10:24:50] [KPSimpleBackup] [AdditionalInfo] BackupManager (KeePassConfigBackup) finished with warnings!
[09/07/2021 10:24:50] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.DirectoryNotFoundException: Impossible de trouver une partie du chemin d'accès 'K:\Keepass\Sauvegardes\'.
à KPSimpleBackup.KPConfigBackupManager.PreBackup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:24:50] [KPSimpleBackup] [Info] FINISHED BackupManager: KeePassConfigBackup
[09/07/2021 10:24:54] [KPSimpleBackup] [Info] KPSimpleBackup: Finished in 6820 ms.
[09/07/2021 10:26:38] [KPSimpleBackup] [Info] KPSimpleBackup: Backup started...
[09/07/2021 10:26:38] [KPSimpleBackup] [Info] START BackupManager: BasicBackup for database: Keepass2
[09/07/2021 10:26:38] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:26:38] [KPSimpleBackup] [Info] Save database to: file:///K:\Keepass\Sauvegardes\Keepass_20210709_102638.kdbx
[09/07/2021 10:26:39] [KPSimpleBackup] [AdditionalInfo] BackupManager (BasicBackup) finished with warnings!
[09/07/2021 10:26:39] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.IOException: Un périphérique qui n’existe pas a été spécifié.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
à System.Net.FileWebStream.Write(Byte[] buffer, Int32 offset, Int32 size)
à KeePassLib.Serialization.HmacBlockStream.WriteSafeBlock()
à KeePassLib.Serialization.HmacBlockStream.Write(Byte[] pbBuffer, Int32 iOffset, Int32 nCount)
à System.Security.Cryptography.CryptoStream.Write(Byte[] buffer, Int32 offset, Int32 count)
à KeePassLib.Utility.MemUtil.Write(Stream s, Byte[] pbData)
à KeePassLib.Serialization.KdbxFile.WriteInnerHeader(Stream s)
à KeePassLib.Serialization.KdbxFile.Save(Stream sSaveTo, PwGroup pgDataSource, KdbxFormat fmt, IStatusLogger slLogger)
à KeePassLib.PwDatabase.Save(IStatusLogger slLogger)
à KeePassLib.PwDatabase.SaveAs(IOConnectionInfo ioConnection, Boolean bIsPrimaryNow, IStatusLogger slLogger)
à KPSimpleBackup.BackupManager.SavePwDatabaseToPath(IOConnectionInfo fileInfo)
à KPSimpleBackup.BasicBackupManager.Backup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:26:39] [KPSimpleBackup] [Info] FINISHED BackupManager: BasicBackup
[09/07/2021 10:26:39] [KPSimpleBackup] [Info] START BackupManager: LongTermBackup for database: Keepass2
[09/07/2021 10:26:39] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:26:39] [KPSimpleBackup] [Info] Save database to: file:///C:\Users\leguillou-g\AppData\Local\Temp\qok1ierq.nh3.kdbx
[09/07/2021 10:26:42] [KPSimpleBackup] [Info] Copy database to: file:///K:\Keepass\Sauvegardes\Keepass_long-term-backups/weekly/Keepass_2021-27.kdbx (from: file:///C:\Users\leguillou-g\AppData\Local\Temp\qok1ierq.nh3.kdbx)
[09/07/2021 10:26:44] [KPSimpleBackup] [AdditionalInfo] BackupManager (LongTermBackup) finished with warnings!
[09/07/2021 10:26:44] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.IOException: Un périphérique qui n’existe pas a été spécifié.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
à Microsoft.VisualBasic.FileIO.FileSystem.CopyOrMoveFile(CopyOrMove operation, String sourceFileName, String destinationFileName, Boolean overwrite, UIOptionInternal showUI, UICancelOption onUserCancel)
à KPSimpleBackup.BackupManager.CopyPwDatabaseFileToPath(String toPath, Boolean overwrite)
à KPSimpleBackup.LongTermBackupManager.Backup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:26:44] [KPSimpleBackup] [Info] FINISHED BackupManager: LongTermBackup
[09/07/2021 10:26:44] [KPSimpleBackup] [Info] START BackupManager: KeePassConfigBackup for database: Keepass2
[09/07/2021 10:26:44] [KPSimpleBackup] [Info] Backup to next path: K:\Keepass\Sauvegardes\
[09/07/2021 10:26:44] [KPSimpleBackup] [Error] Could not create backup directory!
[09/07/2021 10:26:44] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.IOException: Un périphérique qui n’existe pas a été spécifié.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
à System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
à KPSimpleBackup.KPConfigBackupManager.PreBackup()
[09/07/2021 10:26:44] [KPSimpleBackup] [AdditionalInfo] BackupManager (KeePassConfigBackup) finished with warnings!
[09/07/2021 10:26:44] [KPSimpleBackup] [AdditionalInfo] Exception: System.IO.IOException: Un périphérique qui n’existe pas a été spécifié.
à KPSimpleBackup.KPConfigBackupManager.PreBackup()
à KPSimpleBackup.BackupManager.Run()
[09/07/2021 10:26:44] [KPSimpleBackup] [Info] FINISHED BackupManager: KeePassConfigBackup
[09/07/2021 10:26:46] [KPSimpleBackup] [Info] KPSimpleBackup: Finished in 8465 ms.
Best Regards,
Gilles
I have one company wide database placed on a SAMBA-share. Sometimes that share is not available, e.g. when the corresponding host gets restarted for maintenance or alike, but even then I need passwords from that database to maintain other hosts etc. So I created a trigger which creates a local copy whenever the shared database gets saved. That trigger already is restricted to really fire ONLY for the shared database identified by it's UNC-path.
What I would like to achieve is using KPSimpleBackup once relative paths to the database are supported and whenever the database on the share gets saved, create automatic backups on the share as well AND still fire my trigger to create a local copy of the shared database. Because that local copy is saved again, it would be great to have the plugin come into play again and store backups for the local copy as well.
In theory, this way I would get X backups on the share and the same X backups locally automatically. Is something like that possible or would the trigger make the plugin NOT fire at all for some reason? Thanks!
I tried both installation methods. https://github.com/marvinweber/KPSimpleBackup/wiki/Installation
I don't see it in the tools menu or plugins submenu
Not sure where to find error messages for you, but I'm using the latest mono-devel from the official Ubuntu repo:
deb [arch=amd64] https://download.mono-project.com/repo/ubuntu stable-focal main
Keepass startup attempts to compile KPSimpleBackup.plgx, fails, and posts a dialog box saying that it's not compatible and I may need to install mono. For the record: the older dbBackup.plgx works fine, but I haven't tried any other plugins.
Ubuntu: 21.04 (hirsute)
Keepass: 2.47 (64-bit)
mono-devel: 6.12.0.122-0xamarin1+ubuntu2004b1
Hi
If I save the database, instead of 1 second it takes four times the amount as the process bar goes from 0% to 100% four times instead of one.
That's quite annoying.
I could lower the number of key transformation iterations as a workaround, but still I want to know why it does that.
KeePass 2.46
KPSimpleBackup 1.3.0
Intel Core i5-9300H (4 cores / 8 threads)
Win10 home x64 v1909
Thanks,
Stonecrusher
I would have assumed that putting 0 into the number of backups to keep does this, but it isn't mentioned in the docs.
Can you confirm?
Hi there,
When this plugin is used locally then everything is working as intended but when it tries to backup a database opened from URL then the below error is shown. Ideally, it would create a backup folder on the online storage or make it possible to add an online storage location in the settings.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Net.WebException: Could not find a part of the path 'S:\Online\Passwords\KeePass\Database\Backups\Main_2019.08.09_11.59.58.kdbx.tmp'. ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'S:\Online\Passwords\KeePass\Database\Backups\Main_2019.08.09_11.59.58.kdbx.tmp'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing)
at System.Net.FileWebRequest.GetRequestStreamCallback(Object state)
--- End of inner exception stack trace ---
at System.Net.WebClient.OpenWrite(Uri address, String method)
at KeePassLib.Serialization.IOConnection.OpenWrite(IOConnectionInfo ioc)
at KeePassLib.PwDatabase.Save(IStatusLogger slLogger)
at KeePassLib.PwDatabase.SaveAs(IOConnectionInfo ioConnection, Boolean bIsPrimaryNow, IStatusLogger slLogger)
at KPSimpleBackup.KPSimpleBackupExt.BackupAction(PwDatabase database)
at KPSimpleBackup.KPSimpleBackupExt.OnSaveAction(Object sender, FileSavedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at KeePass.Forms.MainForm.SaveDatabase(PwDatabase pdToSave, Object sender)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at KeePass.UI.CustomToolStripEx.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3416.0 built by: NET472REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
KeePass
Assembly Version: 2.41.0.19744
Win32 Version: 2.41.0.0
CodeBase: file:///D:/Install/KeePass/KeePass.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3324.0 built by: NET472REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3416.0 built by: NET472REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3429.0 built by: NET472REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
AutoTypeSearch
Assembly Version: 2.27.0.0
Win32 Version: 0.11.0.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/tiwjnSaTexPjUNkuKz5R/AutoTypeSearch.dll
----------------------------------------
HaveIBeenPwned
Assembly Version: 1.3.1.0
Win32 Version: 1.3.1.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/cGtcnWFvXLvBLeo1NMz7/HaveIBeenPwned.dll
----------------------------------------
System.Net.Http
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll
----------------------------------------
KeePassFaviconDownloader
Assembly Version: 2.0.9.36531
Win32 Version: 1.9.0.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/xELOlrAHW8sX1ELuPChO/KeePassFaviconDownloader.dll
----------------------------------------
KeePassRPC
Assembly Version: 2.0.34.36533
Win32 Version: 1.8.0.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/8UsRMUrfthPScL1EQMLm/KeePassRPC.dll
----------------------------------------
Fleck2
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/8UsRMUrfthPScL1EQMLm/Fleck2.DLL
----------------------------------------
DomainPublicSuffix
Assembly Version: 2.0.1.0
Win32 Version: 2.0.1.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/8UsRMUrfthPScL1EQMLm/DomainPublicSuffix.DLL
----------------------------------------
Jayrock
Assembly Version: 0.9.12915.0
Win32 Version: 0.9.11214.1056
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/8UsRMUrfthPScL1EQMLm/Jayrock.DLL
----------------------------------------
KPSimpleBackup
Assembly Version: 1.1.0.0
Win32 Version: 1.1.0.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/0C2HbbVxUDZFsBTCDRdD/KPSimpleBackup.dll
----------------------------------------
PEDCalc
Assembly Version: 1.4.1.0
Win32 Version: 1.4.1
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/wqY77b9AWupgUjEtLLEn/PEDCalc.dll
----------------------------------------
YetAnotherFaviconDownloader
Assembly Version: 1.2.1.0
Win32 Version: 1.2.1.0
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/adwxJf6SKE2AYsYLQNzK/YetAnotherFaviconDownloader.dll
----------------------------------------
KeePass.XmlSerializers
Assembly Version: 2.41.0.19744
Win32 Version: 2.41.0.19744
CodeBase: file:///D:/Install/KeePass/KeePass.XmlSerializers.DLL
----------------------------------------
System.Security
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3101.0 built by: NET472REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Security/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------
Jayrock.Json
Assembly Version: 0.9.12915.0
Win32 Version: 0.9.13422.2206
CodeBase: file:///C:/Users/Jason/AppData/Local/KeePass/PluginCache/8UsRMUrfthPScL1EQMLm/Jayrock.Json.DLL
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3260.0 built by: NET472REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
Windows.ApplicationModel
Assembly Version: 255.255.255.255
Win32 Version: 10.0.10011.16384
CodeBase: file:///C:/WINDOWS/system32/WinMetadata/Windows.ApplicationModel.winmd
----------------------------------------
System.Runtime.InteropServices.WindowsRuntime
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.WindowsRuntime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.WindowsRuntime.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
When the backup process is in action, the main KeePass Window is frozen and not usable. To improve the usability, some indicator should be introduced to indicate that the backup currently takes place.
Using KSSimpleBackup v1.3, if the option 'Backup database when it's being closed or when the KeePass application is being closed' is disabled, it still saves the database right when the workspace is locked, whether if a manual lock or when the auto lock trigger is hit. With that option disabled, it should only save either when the database is being closed or the app is being closed according to the option description. If I turn off that option and lock the database, it does not save so I know KeePass v2.4.5 is not attempting that save and KSSimpleBackup v1.3 is doing it. It does not seem to matter what combination of options I'm using, if this option is unchecked it will always save the database when only locking the database either manually using 'Lock Workspace' function, or automatically based on the auto-lock timer option value in KeePass v2.4.5. See here for the option text in KSSimpleBackup v1.3:
Can there be an option / method of using KSSimpleBackup where it only saves the database when the database is being closed or the app is being exited from (or when the manual 'Backup Database now!' menu item is clicked)? That would be in addition to the 'Backup Database now!' function via the plugin menu. Thank you in advanced, and for the great plugin!
... as an improvement
Compliments , I highly appreciate your tool !!!
I have the setting for KPSB to make a backup whenever it is closed - it never does. I can exit the app either from within KP or the system tray icon and it immediately closes without a backup. Only a manual backup works or if I enable the option to backup on save so it backs up when I save. Wonder if it's because no automatic save is done when exiting i.e. no changes are made.
Include File Hashed to Release Info
This is a follow-up to #31: One SAMBA-share hosting a database used by multiple users. All of those use KPSimpleBackup to create additional backups when each one saves its own changes.
Is that a problem when NOT having concurrent changes? So really only one user after another opens, changes and saves? Looking at file names, I assume KPSimpleBackup most likely won't care who created a backup and simply clean things up as everything has been created by one and the same user?
What happens in case of concurrent access? E.g when user 1 opened the file, changed something, user 2 did the same in the meantime and saved before user 1 could. Regarding my tests, KeePass would recognize that and provide options to either synchronize or overwrite the database, in which case a user would need to synchronize most likely.
But when would come KPSimpleBackup into play in this scenario? First when user 2 is saving of course, but what about user 1? Would it create backups when KeePass detected concurrent access already or only after user 1 would have decided how to deal with it and the result really gets saved again?
KeePass version: 2.45 (on Windows 10)
KPSimpleBackup version: 1.3.0.0
I enabled "Backup KeePass configuration file (KeePass.config.xml)" in additional settings, and "Long-Term-Backups" in Advanced.
When I check the backup files, I see 2 problems:
I have a master copy of my KeePass database and because it is important I make backups to about 10 different drives (4 local, One Drive, Dropbox, Google Drive, iDrive, etc) using KPSimpleBackup. I noticed today that when I opened up my KeePass database it was not my master database which I keep on Dropbox. Instead it was the last backup of the master database made by KPSimpleBackup. So instead of my master database opening (at "D:\Cloud\Dropbox\ACTIVE KEEPASS[2022-11-25].kdbx") the backup database opened (at "E:\KEEPASS BACKUP/2022-11-25] KeePass_2022.11.25_21.28"). So KeePass is now opening up a backup copy of the file -- which KPSimpleBackup has renamed) on a completely different drive. What should happen is that when I launch KeePass it opens up my master database and not a backup copy on some other drive. Furthermore, the database file that opens up changes -- on different drives. One time it is on the D Drive, Another time it is on GDrive. So I am now left with trying to figure out if the KeePass Database I am now using is the most current with the newest data or if I am using "the correct" backup copy of my KeePass database. This is a nightmare. I have removed KPSimpleBackup because the database file that KeePass opens is now subject to the whim of and renaming by KPSimpleBackup. Thanks alot.
Introduce BasicBackupManager
and CleanupManager
to separate the code parts and to lead to a clearer/ simplified structure.
Additionally, introduce BackupManager
abstract class, inherited by the new BasicBackupManager
(for regular backups) and by the LongTermBackupManager
. The BackupManager
can provide methods for storing a db, creating paths, etc.
Besides choosing a static folder for backups, the possibility for "dynamic" backup paths should be available.
Dynamic has to be defined, but something like placeholders could be a possible solution, e.g.: {dbPath}/../../path/to/backups
, or {kpExecPath}/../path/to/backups
.
cf. #30
I am using a custom file format for additional security (no kdbx). I tried database / file name change, and also plugin / Advanced / Use db name. But the backup files all have kdbx.
Is it possible to use the file name without kdbx and at the end date? Thanks.
Hi there,
thanks for this nice plugin. Basically, I host Keepass on my private cloud (Seafile) and I'd like to backup to a subfolder in the actual Keepass directory.
So, I would like to give a relative path and not an absolute one because the Keepass folder has different absolute paths (depending an what PC I use the Seafile sync software). Seafile works similar as Dropbox, so you can define where it should create a sync folder and sometimes this is on C:\ or D:\ or E:.
I didn't find an official way to enter relative paths but I changed the backup path entry in the KeePass.config.xml in the following way:
<Item>
<Key>KPSimpleBackupConfig_backupPath</Key>
<Value>./Seafile/Keepass/Backups/</Value>
</Item>
This works with two exceptions:
a) An error message in the session log that the DB backup failed (actually, it did NOT fail).
b) outdated backups won't be deleted
Maybe you can look into this, at least b) is a bit annoying.
Thanks!
Also, please bump up the maximum number of backups that can be kept to at least a thousand. (The spin box currently maxes out at 100).
Originally posted by @mustelid in #8 (comment)
Would it be possible to save the backup application config file to the long term backup folders too?
Files should be cleaned up based on their creation date, not based on their name.
Would it be possible to have an option that backs up the database just once per session or at least some kind of scheduler for it?
Backing up for every change is a bit overkill for me and also when it's on a slowish device/media it becomes annoying.
Due to #4 backups can now finish with warnings, e.g. when the backup location was not available.
A new setting "Notify me if the backup finishes with a warning" should be introduced. If enabled, a popup is shown if the backup finishes with a warning. The setting should be enabled by default.
Hello !
Since Keepass 2.54, when you customize some settings like URL Override, an enforced configuration file is created : KeePass.config.enforced.xml
this file is actually not and should be saved by KPSimpleBackup if "backup keepass configuration file" is selected.
Please consider adding this file to the backup, otherwise on reinstallation on a new computer, the config of keepass is uncomplete and you can't easily restore the complex URL override you've worked through (I have more than 30, ;D).
Thanks, keep up the good work, I need only 2 plugins to keepass, and KPSimpleBackup is one of them <3
Sincerely.
Edit : more info on enforced config files : https://keepass.info/help/kb/config_enf.html
The following additions/ changes would increase the usage of the logger:
If you decided to use the folder of the orignal .kdbx file as backup folder as well, then KPsimpelBackup will deletet the original .kdbx file when reaching maximum number of backups.
This make keepas not able to find its database at next startup and is a most unwanted behavioer.
KpsimpleBackup shoulder never delete the original database file.
aka
Original database: C:\KeePass\Database.kdbx
Backups folder: C:\KeePass
once maximum numbers of backups are hit. It Deletes Database.kdbx rather than one of the backup files
Hello Marvin,
Thanks for creating this plugin!
I host my KeePass databases on a samba file server. The databases are simultaneously accessed by multiple people. I also host the KeePass executable, plugins and config file on a read-only share (this isn't strictly relevant to my request, but seems like potentially useful context for this request).
The documented recommendation, of saving to a mapped drive, isn't ideal as I can't guarantee that all users will have the same mapped drives. I'd like to be able to send my backups to a different folder on that same file server. Therefore, being able to specify a UNC path or a relative path would be ideal.
It looks like backing up to a relative path would work, as that's essentially what is done in the SimpleDatabaseBackup project. I've tried this plugin and it does save the backup files to the file server; unfortunately, they are all in the same folder as the original files. If you decide to implement this, perhaps creating a backups folder in the same folder and then writing the backups to the new folder, would be a good way to go?
Backing up to a UNC path would probably be the best option as that would mean that I could specify a single location for all backups, regardless of whether the user opens a local database from their PC or a database on the file server.
If LTBs are enabled, KeePass has to save the database up to four times.
It migth be faster to save the db once, and copy the resulting file to the other required locations.
Todo: Evaluate, if this actually does improve the performance (also, if it does not significantly worsen the perfomance, if LTB is not used)
Solution: Database is only saved once and copied afterwards for LTB backups. However, the "normal backup" should still be created by saving the database (using the api provided by KeePass) to ensure compatibility with the IOProtocolExt protocol.
Also, it should be implemented in a way that it either can use the previous normal backup file for copying to LTB or save the database in a temporary file from which it is copied to LTB (this allows using the LTB feature without having to do a normal backup before; this might be useful in the future).
It would be great, if we can chose per DB if a backup should be created and we can chose per DB where the backup will be stored.
Thanks Martin
The file is named
KeePass.config.xml.backup-application-config_2021.04.13_20.55.26
The .26 belongs to the date time added but the extension should be .xml
Hi Marvin, I wanted to see if you could possibly add the capability of backing up the KeePass.config.xml along with the database file. My idea would be using a check box to be able to select the KeePass.config.xml file to be backed up with the database file.
The reason for this request is that the KeePass.config.xml has all of the current window layout and formatting in it so when you replace both the database file and the KeePass.config.xml files for a new version of keepass you have the same layout without the hassle of resizing etc.
Thanks for your consideration,
Each time the backup saves files in the directories "yearly, monthly, weekly".
The old "today's" versions are being erased
To work better with the disk, the file must be created once. When the number of stored files exceeds the threshold and you need to delete the oldest one, then transfer it to the directories in turn "weekly-> monthly->yearly" if it meets their conditions.
The move operation is much less overhead for the file system than creating 4 files each time when starting a backup
The yearly, monthly, weekly config is also not saved.
New option to only make backups, if the database actually has changed since last backup.
This requires to store the hash of the last backup (of the db file) somewhere (this should work per backup location)
Thanks for the excellent plugin.
I use a single DB (on my desktop) and access the same DB over the home network from my laptop.
Keepass v2 allows for this use case out of the box but I had a DB corruption recently and I suspect this is due to my laptop not closing the DB cleanly. I ended up setting up KPS on the desktop as a consequence to avoid any potential data loss.
I haven't accessed the DB from laptop yet, and was wondering what will happen if I access it from my laptop and add a new entry, will it trigger the KPS backup process on the desktop when the DB syncs up?
Thanks
Rahul
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.