pfirsich / frontdown Goto Github PK
View Code? Open in Web Editor NEWOpen source (hardlink) backup
License: GNU General Public License v3.0
Open source (hardlink) backup
License: GNU General Public License v3.0
At the moment Frontdown will create a new folder every time a new backup is started, without ever removing old ones. There should be an option to delete older backups automatically and also a mechanism that deletes old backups if necessary. At the moment Frontdown will just fail when trying to backup to a full drive, so there should probably an estimation step when applying actions that will check if there is enough space left to actually apply the changes and delete old backups if necessary.
I'm really leaning towards GPL on this one, because I don't want anyone to improve the backup tool that is supposed to finally fulfill my needs without making it available to me.
One of the requirements when first starting Frontdown was to have it handle opened/locked files, which is does not do yet.
We could cache file sizes, modification dates and/or hashes for files in a backup.
The cache could be implemented in JSON or for performance as binary.
It seems as though some messages (for example in line 23: "logging.info("Apply actions.")" show up in neither the console nor the log file. And exceptions/errors only show up in the log.txt and not in the console.
Probably we want to pre-render the HTML table instead of parsing the JSON content.
Maybe we can also hide the "hardlink" entries (in hardlink mode) since they basically are NOP.
Currently added files in the target is O(n^2). We would have to optimize finding specific files in the fileSet, but the order of our list should be preserved (so it resembles the structure of the file system as a breadth search linearization), so I would suggest using an auxiliary structure. Maybe just a dictionary?
for fullName in relativeFileWalk(compareDirectory):
for element in fileSet:
if element.path == fullName:
element.target = True
break
else:
fileSet.append(File(fullName, source=False, target=True))
Currently, the metadata flag is set to true every time the actions are applied (without checking the result).
metadataDirectory mostly is config.TARGET_DIR + backupDateFolder or in non-versioned mode only config.TARGET_DIR, targetDirectory is not config.TARGET_DIR and element.target does not denote existence in the target, but in the compare directory. Proper terminology for the folder that holds all the sub-backup-folders (named by date), these folders themselves and the folder inside them holding the actual backup data has to be found, that also maps naturally to non-versioned backups.
I think we should implement automatic integration tests, that are predefined configs with predefined file system setups and predefined modifications of these systems between the backup. This might be quite a bit of work, but if someone other than ourselves ever starts to use this tool, we should definitely employ comprehensive tests of some sort.
The current version (importing a module) does not allow for default values. Using eval() and a globals dict, this would be possible. There are probably more options though...
Calling JSON_minify reduces the whole JSON code to one line and therefore makes the error messages the json modules throws very unhelpful regarding the location of the parsing problems.
Currently, Frontdown has no concept of folders, so that empty folders will not be included in the backup. This was a deliberate design decision, but turns out to be necessary...
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.