Giter Club home page Giter Club logo

rustic_scheduler's Introduction

centrally schedule rustic backups

About

rustic scheduler is a client/server application to schedule regular backups on many clients to one identical repository controlled by a central scheduling server.

It allows to define client groups which are all backed up the same way.

Note: rustic scheduler is in an early development stage.

Contact

Contact Where?
Issue Tracker GitHub Issues
Discord Discord
Discussions GitHub Discussions

Getting started

  • Install Rust, e.g. using rustup.
  • Clone this github repository and the rustic repository.
  • Compile the rustic-scheduler server and client using cargo build --release --bins
  • Copy the rustic-scheduler-server binary to your backup schedule server and the rustic-scheduler-client binary to all your clients (available under /targets/release).
  • Create a config file ./config/rustic_schedulder.toml on your backup schedule server (example config is available in the config/ dir)
  • Run the rustic-scheduler-server binary on your server in the dir containing the config.
  • On each client, run rustic-scheduler-client <ADDR>, where <ADDR> is the websocket address to connect, e.g. rustic-scheduler-client ws://server.localdomain:3012/ws.
  • Backups on your clients are automatically started based on the configured schedule(s).
  • Statistics for a specific clients are available under /client/%client, e.g. http://server.localdomain:3012/client/my_server1

Are binaries available?

Yes, you can find them here.

Contributing

Tried rustic-scheduler and not satisfied? Don't just walk away! You can help:

Do you know how to code or got an idea for an improvement? Don't keep it to yourself!

  • Contribute fixes or new features via a pull requests!

Please make sure, that you read the contribution guide.

License

Licensed under either of:

at your option.

rustic_scheduler's People

Contributors

simonsan avatar renovate[bot] avatar aawsome avatar

Stargazers

epyon_avenger avatar  avatar  avatar  avatar Srigovind Nayak avatar

Watchers

 avatar  avatar

rustic_scheduler's Issues

Handle backup statistics

Statistics about backup runs (OK/disconnected/failed with error on the client) are already saved, but not used so far. They should be accessible by the web-server on the rustic_scheduler server.

Restrict number of parallel backup jobs

Allow to configure the total number of backup jobs backing up in parallel into the repository managed by rustic_scheduler.

Maybe also add the possibility to specify the number of total backups run which are allowed to run in parallel on each client - configured per client group.

Allow to manually start a backup

Allow a possibility to manually start a specific backup out-of-schedule.

This could be done, e.g. using a web-interface, for instance the dasboard #4 .

Add dashboard

Add a dashboard webpage which shows state of of backups of each client but also some overall state like "all backups schedules did run OK" or even allow digging into it by client groups, etc...

related to #3

Handle non-connected clients

When clients are not connected, but reconnect, the last missing backup for each source should be re-scheduled.

Server-side configuration

Hi,
I'm trying to migrate from restic to rustic and get some benefits of config files.

There are tons of wrappers around restic. I'm personally using my own that also stores configuration on remote side. And I want to get rid of it :)

So I want to propose some discussion about this feature. What I would like to have is:

  • Make sure that backup list (names, schedule, excludes) are configured on remote side.
  • Have per-host exclude list (with partial sharing)
  • Do self-update if needed using my own build (basically tested/approved build)
  • Upload logs

Ideally I would like to just add rustic poll-do-geverything to /etc/cron.hourly and let it do everything needed (basically just check and do backup if needed). cron.hourly is used here to make sure backup is retried in case of network failure.

Right now I've custom wrapper for restic and I'm using rest-server as backend for this. Just extra restic-like repo is hijacked and reused to serve this. But I think we can think about extra directory layout.

PS. Most likely I'll try to contribute code if it's interesting

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update actions/checkout digest to a5ac7e5
  • chore(deps): update actions/download-artifact digest to 65a9edc
  • chore(deps): update embarkstudios/cargo-deny-action digest to 3f4a782
  • chore(deps): update obi1kenobi/cargo-semver-checks-action digest to c730648
  • chore(deps): update swatinem/rust-cache digest to 23bce25
  • chore(deps): update taiki-e/install-action digest to 9c2797b
  • fix(deps): update rust crate anyhow to v1.0.86
  • fix(deps): update rust crate axum to v0.7.5
  • fix(deps): update rust crate chrono to v0.4.38
  • fix(deps): update rust crate cron to v0.12.1
  • fix(deps): update rust crate log to v0.4.21
  • fix(deps): update rust crate serde_json to v1.0.117
  • fix(deps): update rust crate toml to v0.8.13
  • fix(deps): update serde monorepo to v1.0.202 (serde, serde_derive)
  • fix(deps): update rust crate clap to v4.5.4
  • fix(deps): update rust crate clap_derive to v4.5.4
  • fix(deps): update rust crate env_logger to 0.11
  • fix(deps): update rust crate rustic_core to 0.2
  • fix(deps): update rust crate serde_with to v3.8.1
  • fix(deps): update rust crate tokio to v1.37.0
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

cargo
Cargo.toml
  • anyhow 1
  • axum 0.7.3
  • chrono 0.4.31
  • clap 4
  • clap_derive 4.4.7
  • cron 0.12
  • env_logger 0.10
  • gethostname 0.4.3
  • log 0.4.20
  • rustic_core 0.1
  • sailfish 0.8
  • serde 1
  • serde_derive 1.0.194
  • serde_json 1
  • serde_with 3
  • tokio 1
  • toml 0.8.8
  • tungstenite 0.21
  • url 2.5
github-actions
.github/workflows/audit.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
  • rustsec/audit-check v1.4.1@dd51754d4e59da7395a4cd9b593f0ff2d61a9b95
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • EmbarkStudios/cargo-deny-action v1@1e59595bed8fc55c969333d08d7817b36888f0c5
.github/workflows/ci.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
.github/workflows/cross-ci.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • rustic-rs/cross-ci-action main
.github/workflows/lint-docs.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dprint/check v2.2@2f1cf31537886c3bfb05591c031f7744e48ba8a1
.github/workflows/nightly.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • rustic-rs/create-binary-artifact-action main
  • actions/download-artifact v4@f44cd7b40bfd40b6aa1cc1b9b5b7bf03d3c67110
.github/workflows/prebuilt-pr.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • rustic-rs/create-binary-artifact-action main
.github/workflows/release-cd.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • rustic-rs/create-binary-artifact-action main
.github/workflows/release-ci.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • dtolnay/rust-toolchain v1@1482605bfc5719782e1267fd0c0cc350fe7646b8
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
  • obi1kenobi/cargo-semver-checks-action v2@e275dda72e250d4df5b564e969e1348d67fefa52
.github/workflows/release-pr.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • chainguard-dev/actions main
  • Swatinem/rust-cache v2@a95ba195448af2da9b00fb742d14ffaaf3c21f43
  • taiki-e/install-action v2@56ab7930c591507f833cbaed864d201386d518a8
  • cargo-bins/release-pr v2@deeacca5a38bacc74a3f444b798f4b9bba40f6ad
.github/workflows/triage.yml

  • Check this box to trigger a request for Renovate to run again on this repository

Add security features

  • https support
  • authentication of clients before sending repo information (including password)
  • authentication of the server (to allow trusting the clients to run the backup)

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.