Git Product home page Git Product logo

isgphys / bang Goto Github PK

View Code? Open in Web Editor NEW
28.0 6.0 6.0 4.25 MB

Backup Next Generation for Linux & Mac using rsync (support hardlinks and btrfs snapshots), Web-Frontend, Statistics, History-Merger)

License: GNU General Public License v3.0

Perl 82.83% Shell 1.47% HTML 0.13% CSS 5.10% JavaScript 10.47%
backup rsync btrfs snapshot linux mac cli subvolume perl statistics web-frontend dancer

bang's Introduction

BaNG - Backup Next Generation

Backup tool developed and used by the IT Services Group of the Physics Department at ETH Zurich.

Motivation

A couple of years ago, our backups were made with bash scripts that would start a single rsync process per client to back up the data to a file system on a remote server. We used hard links to avoid that the backup space would have to increase linearly with the number of recent backups we wanted to keep. Still, because of the daily file changes, we always planned the backup space to be roughly twice as large as the productive file server.

At some point, due to the ever increasing storage volumes, the backups started to take longer and longer, and would eventually reach the critical 24 hours limit, thereby making daily backups impossible. Independently, the used ext and xfs file systems on the backup server struggled with the large number of files and hard links, especially when wiping older backups. For these reasons we decided to replan our backups from scratch.

Thus BaNG, our next generation backup tool, was born. It allows to start multiple rsync processes in parallel for higher transfer rates. If the backup server has btrfs, BaNG uses its snapshot feature to store several backups. Combined with the built-in compression the amount of backup space needed is greatly reduced. In addition to command line tools, BaNG has a web front-end to explore the status of the backups at a single glance, while also providing graphs to better analyze the performance and scheduling.

Since 2012 we use it productively for our daily backups of meanwhile over 1.06 PB of data across several SAN servers, Linux and Mac workstations. However, it may still contain bugs and is primarily meant for advanced users. Please refer to the documentation for more details.

Main Features

  • Perl wrapper for established rsync tool
    • compatible with Linux and OS X
    • supports rsh and ssh as remote shell
    • supports hard links and btrfs snapshots
    • incremental transfers, restorable from single backup
    • multiple forked processes for faster transfers
    • wipe based on daily/weekly/monthly backup rotation scheme
    • generate cron entry for scheduled backups and wipes
  • Configurability
    • Easy and extensive configuration options
    • Configurable at several levels (host, group, server, default)
    • Based on text files in the YAML format
  • Reporting
    • Report detailed statistics to MySQL database
    • Report via socket to Xymon monitoring server
    • Report per email
  • Perl Dancer web front-end
    • User authentication and authorization
    • Dashboard with most important information
    • List backup paths to facilitate restore
    • View cron schedule of backup and wipe jobs
    • View configuration parameters
    • Create a new host or group from the web interface
    • View status reports of latest backup jobs
    • View errors in global log files
    • Graphs with various statistics
    • Swimlane graph of the backup schedule
    • Bar charts of largest backup jobs
    • Customizable menu entry for additional links
    • Documentation rendered from markdown files
    • Performance monitoring ( needs Netdata)
  • Command Line Interface - BaNGadm
    • Create / delete host or group config
    • Show available groups
    • Create target folder structure
    • Show / purge all failed backups
    • Create DB dumps
    • Create DB archive
    • Modify BTRFS properties
    • Generate and write cronjob file or print crontab to standard out
    • Check if cronjob file / crontab up-to-date

License

BaNG - Backup Next Generation

Copyright 2019 Patrick Schmid & Claude Becker

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

bang's People

Contributors

patschbo avatar upekkha 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bang's Issues

btrfs compression

Hi patschbo,

Do you recommend enabling the compression option on the btrfs mount point or are there reasons why this shouldn't be done?

Thanks

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.