Coder Social home page Coder Social logo

kpsimplebackup's People

Contributors

marvinweber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kpsimplebackup's Issues

Error "Could not find a part of the path" saving to Samba share on Win10

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()

Database backup error

Tried to do a save today, and this error occurred. Up to then, everything was working normally, and no changes were made to the Keepass configuration prior to this event.

KEEPASS

I have the log if you need to see it.

Minor enhancement to README

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.

Refine and increase options for triggering a backup

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:

  • Provide an option to disable backup on saving in favor of the existing backup on database closing option?
  • Add an option for periodic backup when KeePass has been inactive for a specified period?
  • Keep track of "database has unsaved changes" since a backup so deferred backups (periodic, or on db closing) would be made only when the database has changed since the last backup.

relative paths should be relative to the database file

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.

Long-Term-Backups - Keep single copies of older backups in periods

Keep weekly / monthly / yearly older backups (no matter if backup-limit is reached)

Goal

Keep the following types of backup:

  • One backup of the last 4 weeks
  • One backup of the last 12 months
  • One backup of every year

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)

Settings window not showing

I'm running KPSimpleBackup version 1.4 on the latest Keepass (version 2.56),
But when i open the KPSimpleBackup settings window it doesn't display propery (number of backups to keep is blank) this prevents me from setting up my backups see screenshot

image

image

image

Backup KeePaas configuration file

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.

Relative Path Howto

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

Does the plugin handle databases created by triggers as well?

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!

Does not compile under mono-devel 6.12 on Ubuntu 21.04

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

Every save triggers 4 consecutive saving processes

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.

2020-09-11 16_44_52-Settings
2020-09-11 16_45_02-Settings

KeePass 2.46
KPSimpleBackup 1.3.0
Intel Core i5-9300H (4 cores / 8 threads)
Win10 home x64 v1909

Thanks,
Stonecrusher

When a database file is opened from URL (WebDAV) then an error is shown when saving.

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.

Indicate when backup process is in action

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.

If option 'Backup database when it's being closed or when the KeePass application is being closed' is disabled, it saves the database when the database is being locked

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:

image

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!

Backup not performed when KP is closed as per setting

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.

image

image

How does the plugin handle multiple users sharing the same database?

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?

Multiple Backups (with timestamps) for KeePass Configuration File

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:

  1. the config file is backed up as "KeePass.config.xml.backup-application-config" without proper timestamp, which means, only 1 backup will be created and it'll overwrite any old copies, while I expected that the config file should be backed up with timestamp, similar to database file;
  2. the config file is not backed up in long term backup folders (weekly/monthly/yearly)

Problem with Saving

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.

Code Cleanup

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.

New Path Selection (Dynamic Backup Path Generation)

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

[Request] Custom file format name is not saved

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.

relative paths

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!

Path field too short

I can't find any way to check the full path

image

also for some reason 3 days ago it stopped doing the backups. A log file somewhere would be very useful in these cases. Maybe an idea for the next release :)

[Request] Automatic single backup each session

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.

New setting: Show (popup) warning if backups fail with warnings.

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.

Enforced Config File not backuped

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

Improve Logging

The following additions/ changes would increase the usage of the logger:

  • More detailed error messages
  • possibility to log to file (or at least export to a file)

Deletes the orignal kdb files when maxim # of backup is reached

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

Backup to UNC or relative path

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.

LTB Backups: Save database only once, copy for LTB

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).

KeePass.config.xml Backup

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,

Wrong work of long-term backups

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.

Backups only for changed database file

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)

Single DB with multiple PC/clients

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.