btm-0.12.1 has been yanked.
BTM
Blockchain Time Machine.
BTM is an incremental data backup mechanism that does not require downtime.
Why would you need this?
btm will give you the following abilities or advantages:
- rollback to the state of a desired block height
- hot backup during operation, no downtime is needed
- based on OS-level infrastructure, stable and reliable
- very small resource usage, almost no performance damage
- ...
Library Usages
use ;
let cfg = BtmCfg ;
// Generate snapshots in some threads.
cfg.snapshot.unwrap;
cfg.snapshot.unwrap;
cfg.snapshot.unwrap;
/// Print all existing snapshots.
cfg.list_snapshots;
/// Rollback to the state of the last snapshot.
cfg.rollback.unwrap;
/// Rollback to the state of a custom snapshot.
cfg.rollback.unwrap;
Binary Usages
Usage: btm <COMMAND>
Commands:
list List all existing snapshots
rollback Rollback to the state of an existing snapshot
clean Clean all or part of existing snapshots
daemon Run btm as a daemon process
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help information
-V, --version Print version information
Usage: btm list [OPTIONS]
Options:
-p, --volume <VOLUME> The target volume to operate on
-h, --help Print help information
Usage: btm rollback [OPTIONS]
Options:
-p, --volume <VOLUME> The target volume to operate on
-s, --snapshot-id <SNAPSHOT_ID> The target snapshot to rollback to, a negative value means the latest snapshot [default: -1]
-S, --strict
-h, --help Print help information
Usage: btm clean [OPTIONS]
Options:
-p, --volume <VOLUME> The target volume to operate on
-k, --kept <KEPT> How many snapshots should be kept [default: 0]
-h, --help Print help information
Usage: btm daemon [OPTIONS]
Options:
-p, --volume <VOLUME> The target volume to operate on
-i, --itv <ITV> [default: 10]
-c, --cap <CAP> [default: 100]
-m, --mode <MODE>
-a, --algo <ALGO> [default: Fair]
-h, --help Print help information
Install as a 'systemd service'
Steps:
make
mv btm_package.tar.gz /tmp/
cd /tmp/
tar -xpf btm_package.tar.gz
cd btm_package
su # swith your user account to 'root'
./install.sh \
--snapshot-itv=4 \
--snapshot-cap=100 \
--snapshot-mode=zfs \
--snapshot-algo=fade \
--snapshot-volume=zfs/data
Outputs of systemctl status btm-daemon.service:
● btm-daemon.service - "btm daemon"
Loaded: loaded (/lib/systemd/system/btm-daemon.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-10-12 21:24:16 CST; 2min 27s ago
Main PID: 334 (btm)
Tasks: 1 (limit: 37805)
CPU: 1ms
CGroup: /system.slice/btm-daemon.service
└─334 /usr/local/bin/btm daemon -p=/data -i=4 -c=100 -m=btrfs -a=fade
Usage of tools/install.sh:
# tools/install.sh -h
Usage
install.sh
--snapshot-itv=<ITV>
--snapshot-cap=<CAP>
--snapshot-mode=<MODE>
--snapshot-algo=<ALGO>
--snapshot-volume=<VOLUME>
Example
install.sh \
--snapshot-itv=4 \
--snapshot-cap=100 \
--snapshot-mode=zfs \
--snapshot-algo=fair \
--snapshot-volume=zfs/blockchain
Example, short style
install.sh -i=4 -c=100 -m=zfs -a=fair -p=zfs/blockchain
install.sh -i=4 -c=100 -m=btrfs -a=fair -p=/data/blockchain