Giter Club home page Giter Club logo

frontdown's People

Contributors

jojonas avatar pfirsich avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jojonas jonschz

frontdown's Issues

Improve backup version management

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.

Pick a license

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.

Implement Meta-Data-Caching

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.

logging in applyActions broken in various ways

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.

Rendering of Large actions.html is too Slow

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.

Improve file set construction

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

Documentation and readme

  • Outline the different modes and how they work
  • create a reference config, that includes every key and comments on the key and the respective functionality.
  • Motivate the creation of this tool.
  • List dependencies and contributors

Clarify terminology regarding target directories

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.

Integration tests

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.

Include Default Values for Config

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

Consider Empty Folders

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

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.