You can ask questions in the Discussions or have a look at the +FAQ.
+ + +diff --git a/404.html b/404.html new file mode 100644 index 0000000..f8414f0 --- /dev/null +++ b/404.html @@ -0,0 +1,3 @@ + +
You can ask questions in the Discussions or have a look at the +FAQ.
+ + +
+
+
Library for fast, encrypted, and deduplicated backups
++
This library is powering rustic-rs. A +backup tool that provides fast, encrypted, deduplicated backups. It reads and +writes the restic repository format, which is described in their design +document.
+Note: rustic_core is in an early development stage and its API is subject +to change in the next releases. If you want to give feedback on that, please +open a thread in our +discussions.
+Add this to your Cargo.toml
:
[dependencies]
+rustic_core = "0.1"
+
+This crate exposes a few features for controlling dependency usage:
+use rustic_core::{ConfigOptions, KeyOptions, Repository, RepositoryOptions};
+use simplelog::{Config, LevelFilter, SimpleLogger};
+use std::error::Error;
+
+fn main() -> Result<(), Box<dyn Error>> {
+ // Display info logs
+ let _ = SimpleLogger::init(LevelFilter::Info, Config::default());
+
+ // Init repository
+ let repo_opts = RepositoryOptions::default()
+ .repository("/tmp/repo")
+ .password("test");
+ let key_opts = KeyOptions::default();
+ let config_opts = ConfigOptions::default();
+ let _repo = Repository::new(&repo_opts)?.init(&key_opts, &config_opts)?;
+
+ // -> use _repo for any operation on an open repository
+ Ok(())
+}
+
+use rustic_core::{BackupOptions, PathList, Repository, RepositoryOptions, SnapshotOptions};
+use simplelog::{Config, LevelFilter, SimpleLogger};
+use std::error::Error;
+
+fn main() -> Result<(), Box<dyn Error>> {
+ // Display info logs
+ let _ = SimpleLogger::init(LevelFilter::Info, Config::default());
+
+ // Open repository
+ let repo_opts = RepositoryOptions::default()
+ .repository("/tmp/repo")
+ .password("test");
+ let repo = Repository::new(&repo_opts)?.open()?.to_indexed_ids()?;
+
+ let backup_opts = BackupOptions::default();
+ let source = PathList::from_string(".")?.sanitize()?;
+ let snap = SnapshotOptions::default()
+ .add_tags("tag1,tag2")?
+ .to_snapshot()?;
+
+ // Create snapshot
+ let snap = repo.backup(&backup_opts, source, snap)?;
+
+ println!("successfully created snapshot:\n{snap:#?}");
+ Ok(())
+}
+
+use rustic_core::{LocalDestination, LsOptions, Repository, RepositoryOptions, RestoreOptions};
+use simplelog::{Config, LevelFilter, SimpleLogger};
+use std::error::Error;
+
+fn main() -> Result<(), Box<dyn Error>> {
+ // Display info logs
+ let _ = SimpleLogger::init(LevelFilter::Info, Config::default());
+
+ // Open repository
+ let repo_opts = RepositoryOptions::default()
+ .repository("/tmp/repo")
+ .password("test");
+ let repo = Repository::new(&repo_opts)?.open()?.to_indexed()?;
+
+ // use latest snapshot without filtering snapshots
+ let node = repo.node_from_snapshot_path("latest", |_| true)?;
+
+ // use list of the snapshot contents using no additional filtering
+ let streamer_opts = LsOptions::default();
+ let ls = repo.ls(&node, &streamer_opts)?;
+
+ let destination = "./restore/"; // restore to this destination dir
+ let create = true; // create destination dir, if it doesn't exist
+ let dest = LocalDestination::new(destination, create, !node.is_dir())?;
+
+ let opts = RestoreOptions::default();
+ let dry_run = false;
+ // create restore infos. Note: this also already creates needed dirs in the destination
+ let restore_infos = repo.prepare_restore(&opts, ls.clone(), &dest, dry_run)?;
+
+ repo.restore(restore_infos, &opts, ls, &dest)?;
+ Ok(())
+}
+
+use rustic_core::{CheckOptions, Repository, RepositoryOptions};
+use simplelog::{Config, LevelFilter, SimpleLogger};
+use std::error::Error;
+
+fn main() -> Result<(), Box<dyn Error>> {
+ // Display info logs
+ let _ = SimpleLogger::init(LevelFilter::Info, Config::default());
+
+ // Open repository
+ let repo_opts = RepositoryOptions::default()
+ .repository("/tmp/repo")
+ .password("test");
+ let repo = Repository::new(&repo_opts)?.open()?;
+
+ // Check repository with standard options but omitting cache checks
+ let opts = CheckOptions::default().trust_cache(true);
+ repo.check(opts)?;
+ Ok(())
+}
+
+This crate's minimum supported rustc
version is 1.68.2
.
The current policy is that the minimum Rust version required to use this crate
+can be increased in minor version updates. For example, if crate 1.0
requires
+Rust 1.20.0, then crate 1.0.z
for all values of z
will also require Rust
+1.20.0 or newer. However, crate 1.y
for y > 0
may require a newer minimum
+version of Rust.
In general, this crate will be conservative with respect to the minimum +supported version of Rust.
+Licensed under either of:
+ + + +
+
+
centrally schedule rustic backups
+ + +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.
+rustic-scheduler is in an early development stage. Please use the nightly builds from here.
+Copy the rustic-scheduler-server binary to your backup schedule server and +the rustic-scheduler-client binary to all your clients.
+Create a config file rustic_schedulder.toml on your backup schedule server.
+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 http://server.localdomain:3012/ws
+
+Backups on your clients are automatically started based on the configured +schedule(s).
+Licensed under either of:
+ +at your option.
+ + +
+
+
REST server for rustic
+ + +A REST server built in rust for use with rustic and restic.
+Works pretty similar to rest-server. +Most features are already implemented.
+rustic-server is in an early development stage. Please use the nightly builds from here.
+Allows to give ACLs im TOML format, use option --acl
Example TOML file:
+# default sets ACL for the repo without explicit path
+# (and for the repo under path "default", if exists)
+[default]
+alex = "Read"
+admin = "Modify"
+
+[alex]
+alex = "Modify"
+bob = "Append"
+
+rustic-server
is open-sourced software licensed under the
+GNU Affero General Public License v3.0 or later.
fast, encrypted, and deduplicated backups
++
rustic is a backup tool that provides fast, encrypted, deduplicated backups.
+It reads and writes the restic repo format described in the +design document and can be used as a restic replacement in most cases.
+It is implemented in Rust, a performant, +memory-efficient, and reliable cross-platform systems programming language.
+Hence rustic supports all major operating systems (Linux, MacOs, *BSD), with +Windows support still being experimental.
+We have collected some improvements of rustic over restic +here.
+cargo binstall rustic-rs
+
+scoop install rustic
+
+Or you can check out the +releases.
+Nightly binaries are available +here.
+Beware: This installs the latest development version, which might be +unstable.
+cargo install --git https://github.com/rustic-rs/rustic.git rustic-rs
+
+cargo install rustic-rs
+
+Please check our +documentation for more +information on how to get started.
+This crate's minimum supported rustc
version is 1.70.0
.
The current policy is that the minimum Rust version required to use this crate
+can be increased in minor version updates. For example, if crate 1.0
requires
+Rust 1.20.0, then crate 1.0.z
for all values of z
will also require Rust
+1.20.0 or newer. However, crate 1.y
for y > 0
may require a newer minimum
+version of Rust.
In general, this crate will be conservative with respect to the minimum +supported version of Rust.
+Licensed under either of:
+ +at your option.
+ + +The rustic ecosystem currently consists of the following products:
+Tried tools from our ecosystem 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!
+Please make sure, that you read the +contribution guide.
+Currently our tools are in beta state and miss regression tests. It is not recommended to use them in production backups, yet.
+ + +To help you find your way around the rustic ecosystem, we have compiled the following resources:
+ + +