Giter Site home page Giter Site logo

ebruni / bamana Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 102 KB

A free incremental backup software for GNU/Linux

License: GNU Affero General Public License v3.0

Java 91.57% Shell 8.43%
backup backup-script backups backup-utility backup-solution backup-manager backup-cli

bamana's Introduction

Bamana

Build Status

Bamana is a free (GNU AGPLv3) command line file based incremental backup software for GNU/Linux written in Java, optimized for SSDs and multicore processors, sooner or later to be ported to Windows and MacOS.

The first snapshot of a newly initialized backup recursively saves the source directory into the backup's archive, while subsequent snapshots only save those files which have been added or modified since the previous snapshot. Deleted files and previous versions of modified files (including their metadata) are kept saved so that they can be restored when restoring a corresponding snapshot. Restoring a snapshot doesn't require to restore previous snapshots. Moving/renaming a file doesn't require to create a new copy of it.

Features

Current
  • Attributes preservation: group, owner, permissions, symbolic link target, creation time, last access time, last modified time
  • Integrity checks
  • Exclusion of selected subdirectories
  • Duplicate files are stored only once
  • Optimized for SSDs and multicore CPUs.
To be introduced ASAP
  • Support for Windows filesystems
  • Creation of backups with more than one root directory
  • Data and metadata compression and encryption (metadata currently weights far more than it should)
  • Remote backups
  • File locking and checks for existing locks
  • Symlink following
  • More optimizations for SSDs and multicore CPUs
  • Faster integrity checks (at the moment they can be really slow)
  • UI and UX improvements
  • GUI
  • Much more. Suggestions are warmly welcome.

Installation guide

Binaries are not available yet, anyway compiling from source is extremely easy. Just be sure to have git and either OpenJDK 7+ or Oracle JDK 7+ in your system before running the installer.

git clone https://github.com/ebruni/bamana
cd bamana
sudo ./SETUP

and follow the instructions.

Usage

Step 1. Initialize a backup for the directory you want to backup. cd to the directory and type:
bamana init -i

Step 2. Take a snapshot of that directory. cd to the directory and type:
(sudo) bamana snap -i

Step 3. Restore a snapshot. cd to the directory where you want to restore the snapshot and type:
(sudo) bamana restore -i

Using sudo is advised to avoid missing permissions related issues.

Need help (or just wanna have a chat)? Join Bamana's telegram group: https://t.me/joinchat/AAAAAD6fZmMrP9lcxZsS5g

Current version

0.0.1

Changelog

No significant changes yet.

Development status

I've done many snapshots and restores of directories containing tens of thousands of elements and everything seems to work as it should. Minor bugs and unhandled events can still pop out but nothing critical as far as I know. I can't guarantee about the strenght of the hashing function at the moment (currently MD5, will likely switch to SHA-1 or higher in the near future), and there are no collision detection mechanisms yet. Code and user interface are sometimes inelegant and logs are often vague and messy. I'm planning to do a gradual refactoring and to produce a decent documentation both for users and developers in the next months.
Check the Issues section for the currently known/reported issues.

FAQ

Q: Are you using Bamana for your backups?
A: Absolutely yes.

Q: Are newer versions backward compatible with backups created with older versions?
A: As a general rule yes: legacy code will be kept active and bugfixed when necessary. I'll publish a detailed backward compatibility chart on this page if backward compatibility issues will ever arise.

bamana's People

Contributors

ebruni avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

andcss93

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.