summaryrefslogtreecommitdiffstats
path: root/lib/App/BorgRestore
AgeCommit message (Collapse)AuthorFilesLines
2023-09-03Fix deprecation warning with borg 1.2.xFlorian Pritz1-1/+8
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-10-14DB: Remove columns left over by migrations 3/4Florian Pritz1-0/+24
It's not super bad that these are there, but they do increase the database size a fair bit considering that they are actually just full of NULL values. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-10-14DB: Vacuum database after schema migrationsFlorian Pritz1-0/+6
Migrations may remove data and it doesn't hurt to vacuum afterwards to reduce the file size. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-09-27DB: Add assertion to check for missing files in databasedevFlorian Pritz1-0/+6
This is related to 62f5bc3ce90fedb396d103caae68dc2f211f1b16 and would trigger if the optimization prevents a path from being added to the database. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-09-27Add missing database migrationFlorian Pritz1-0/+7
Should have been part of f0dd3fd59afac321317d3b52a36d179b4ea504f7. Oops. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-09-27DB: Fix incorrect subpath handling for path that is a superstring of theFlorian Pritz1-2/+3
previous path for top level paths Same issue as 62f5bc3ce90fedb396d103caae68dc2f211f1b16 except that this time it is the for top level paths (`/lib` and `/lib64`) which are handled outside the loop. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2020-09-27DB: Fix incorrect subpath handling for path that is a superstring of theFlorian Pritz2-2/+38
previous path Files that share a common substring (e.g. `/home/foo/.ssh/id_rsa` and `/home/foo/.ssh/id_rsa.pub`) could incorrectly trigger an optimization that was only supposed to be triggered if the first path is a directory. The first path would then not be added to the database cache even though it should have been. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28Import untaint function where usedFlorian Pritz3-12/+12
Better code readability than with the full name. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28Helper: Export untaintFlorian Pritz1-0/+3
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28Helper: Remove untaint_archive_nameFlorian Pritz3-10/+3
We no longer need a special whitelist for archive names since the database no longer uses them as column keys. We still need to untaint variables that are passed to DBI so we use untaint() for this now. We also move the location of the untaint call closer to its usage with DBI/system() to prevent untainted data from leaking elsewhere. Fixes #4 Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28DB: Convert timestamp column names to numeric IDsFlorian Pritz1-7/+23
Having the backup archive names in the table columns is not strictly necessary. Replace this with numeric IDs and map them via the `archives` table so that we can eventually remove untaint_archive_name(). Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28DB: Use get_archive_id instead of _prefix_archive_idFlorian Pritz1-2/+2
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28DB: Apply migration is correct orderFlorian Pritz1-1/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-09-28DB: Implement version based database schema upgradesFlorian Pritz1-6/+34
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-02-07Support borg list --prefix option via settingFlorian Pritz2-3/+16
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2019-02-07DB/remove_archive: Properly handle cases where the DB is empty after removalFlorian Pritz1-7/+13
Empty here means that the DB does not contain any backup archive information because all information that is already in the db has to be removed. The old code tries to copy existing data into the new table, but since there are no archives to copy data for, the sql query fails. Also, it would copy all rows and only populate the path column, but if there are no archives that have timestamps, that's actually useless work. This patch ensures that the table is kept empty if there are no archives. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-11-12Enable trace logging in BEGIN block for test suiteFlorian Pritz1-4/+9
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-13Change prepare_data_in_memory default to 0 to enable direct-to-dbFlorian Pritz1-5/+6
Also instantly deprecate the option since it is only a short term fix in case someone notices problems with the new code. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-12Remove duplicate code by calling add_path in save_nodesFlorian Pritz1-17/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-12Update cache only when going back up the stack instead of all the timeFlorian Pritz1-9/+13
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-12Only add top level directory when we actually have a top level directoryFlorian Pritz1-2/+4
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-12Ensure that top level directories are also written to the DBFlorian Pritz1-0/+4
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-10Remove left over debug log entryFlorian Pritz1-1/+0
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09PathTimeTable/DB: Use cache as kind of stack and only write to DB when ↵Florian Pritz1-18/+25
removing an item from the stack Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09DB: Fix update_path_if_greater not working for existing rowsFlorian Pritz1-1/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09PathTimeTable/DB: Use constant to control trace loggingFlorian Pritz1-6/+8
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09PathTimeTable/DB: Improve performance by removing usage of regex in hot placesFlorian Pritz1-6/+10
This cuts execution time on my workstation from about 85 seconds for an --update-cache adding one archive to roughly 62 seconds. Measured totally unscientifically by simply running the full application instead of isolating the code, but it makes sense that regexes are slower so I'll take it. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09Use strictures instead of strict/warningsFlorian Pritz6-12/+6
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09Get settings via hash instead of direct variable accessFlorian Pritz1-14/+16
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09Settings: Add constructorsFlorian Pritz1-12/+25
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09Settings: Pull config file loading into functionFlorian Pritz1-13/+18
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09Settings: Use Function::ParametersFlorian Pritz1-6/+5
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-09PathTimeTable/DB: Add cache to reduce number of DB callsFlorian Pritz1-2/+51
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-06Update copyright yearsFlorian Pritz1-1/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-06Add direct-to-db adding of paths instead of memory onlyFlorian Pritz4-5/+92
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-09-06Extract lookup table into dedicated packageFlorian Pritz1-0/+67
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-08-19Remove unused variableFlorian Pritz1-1/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-08-19DB: Do not create directories for special :foo: DBsFlorian Pritz1-1/+4
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-08-17Die when XDG_* and HOME env vars are not setFlorian Pritz1-5/+17
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-08-02Remove sqlite cache size warningFlorian Pritz2-5/+5
The original performance problem on my machine doesn't seem to be reproducable any more so maybe either sqlite got smarter or it was something else entirely. Move the warning to DEBUG and soften the documentation. If it still helps people can use it, but we don't have to annoy them if it doesn't. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-01-24Only increase sqlite cache size during updateFlorian Pritz1-4/+7
While not all operations fill the cache, --list does. However, for read operations it doesn't actually appear to help performance. Limit the large cache setting to update operations only because there it does really increase performance. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2018-01-24Add --list feature to search for files contained in backups by pathFlorian Pritz1-0/+16
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-12-04Warn if sqlite cache is fullFlorian Pritz1-0/+11
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-12-03Settings: Fix missing indentation in docFlorian Pritz1-1/+1
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-12-02Properly document removal of prefixes via @backup_prefixesFlorian Pritz1-4/+9
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-11-26Remove old cacheFlorian Pritz1-0/+5
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-11-26Bump cache version levelFlorian Pritz1-1/+1
The previous code didn't support borg 1.1 properly and the cached might now be broken. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-11-26Use mtime for borg 1.1 instead of isomtimeFlorian Pritz1-1/+1
The rest of the code expects the mtime format, but borg <1.1 mixed up the formats between isomtime and mtime. Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-11-22Log warning if no archives are detected in borg outputFlorian Pritz1-0/+4
Signed-off-by: Florian Pritz <bluewind@xinu.at>
2017-11-22Create cache directory in DB instead of SettingsFlorian Pritz2-4/+4
Signed-off-by: Florian Pritz <bluewind@xinu.at>