Create snapshots
To create a snapshot, you must pick a channel name and the list of paths (one or more) you want to save, as shown below:
rekkord save <channel> <path1> <path2> ...
Channels are used to separate snapshots by source or purpose; for example, if you want to create backups of your personal data, you could use three channels:
- photos
- documents
- music
For this specific example, you could create your backups with the following commands:
rekkord save photos /home/john/photos
rekkord save documents /home/john/documents
rekkord save music /home/john/music
The command will give you the unique object ID (OID) of the snapshot once it finishes. You can retrieve the OID later with rekkord snapshots.
List snapshots
rekkord snapshots
The output looks something like this:
# <channel> <date>
webserver 2025-09-10 03:38:31 +0200
+ OID: MC8AD390511AAA81C4BA9FEDCDB94C2DFFE05035B69FFC64501FC210D55A8BEA4
+ Size: 2.407 GB
+ Stored: 1.255 GB
+ Added: 1.107 GB
media 2025-09-11 03:53:25 +0200
+ OID: M8B5FB7CB0C90BABDE37FA2A43B17721D16AAE5D7803A88E151DFCC63CAB14EFD
+ Size: 1.231 GB
+ Stored: 1.152 GB
+ Added: 1.107 GB
webserver 2025-09-10 03:14:08 +0200
+ OID: M898DB3E9C1229170D6DBB1B1BAA7BF663A978F0B11655F05A7FBD93C1BEB7329
+ Size: 2.407 GB
+ Stored: 1.255 GB
+ Added: 2.411 MB
media 2025-09-11 04:01:57 +0200
+ OID: M1B0A86B11F48E9028EAF970B751FA727226168EF0939D625076FFF49DABCF8B5
+ Size: 1.236 GB
+ Stored: 1.153 GB
+ Added: 54.75 MB
Use --format JSON or --format XML to get this list in a JSON or XML format.
Each object ID (or OID) contains a single-letter prefix and a BLAKE3 hash in hexadecimal form.
Explore snapshot
You can list the directories and files in a snapshot with the rekkord list command. You can either use the unique object ID, or provide a snapshot channel, in which case rekkord will use the most recent snapshot that matches it.
rekkord list <identifier>
You can use an object ID (OID) or a snapshot channel as the identifier. In addition, you can specify a path to locate an object inside the main snapshot or directory, separated with a colon.
Here are two examples without path:
MBC49879164FDEF1DD26501441B20013202E6DC7AF5D5C5AC8C97AC8126FDF4B4: use snapshot with OID MBC4987916...front-machine: find latest snapshot with channel front-machine
Here are two examples with an additional path:
M51D1AE52921C8F636A18F9065D5348FC47BD61546B9688FD5D1D45F5AE240FAC:var/lib/mysql: locate directory var/lib/mysql inside snapshot with OID M51D1AE529...database-machine:var/lib/mysql: locate directory var/lib/mysql inside inside latest snapshot with channel database-machine
The output looks something like this:
# <type> <name> <mode> <date> <size>
[S] vpn/opt [2023-12-15 06:18:10 +0100]
[D] opt/ (0755) [2023-10-05 17:03:38 +0200]
You can recursively list the content with rekkord list <identifier> --recurse flag:
# <type> <name> <mode> <date> <size>
[S] vpn/opt [2023-12-15 06:18:10 +0100]
[D] opt/ (0755) [2023-10-05 17:03:38 +0200]
[D] certificates/ (0750) [2023-12-13 09:43:10 +0100]
[F] cloud.intra.example.com.key (0640) [2023-12-13 09:43:10 +0100] 241 B
[F] forum.intra.example.com.crt (0640) [2023-12-13 09:43:10 +0100] 5.269 kB
[D] agnos/ (0755) [2023-10-02 12:38:29 +0200]
[D] certificates/ (0750) [2023-10-02 12:38:50 +0200]
[F] cloud.intra.example.com.key (0640) [2023-11-20 23:26:06 +0100] 241 B
[F] forum.intra.example.com.crt (0640) [2023-11-20 23:26:07 +0100] 5.269 kB
[F] agnos (0755) [2023-09-21 16:53:54 +0200] 11.24 MB
[F] agnos.toml (0644) [2023-10-02 12:38:28 +0200] 1.893 kB
[D] accounts/ (0750) [2023-09-21 16:53:55 +0200]
[F] main.key (0644) [2023-09-21 16:53:56 +0200] 3.243 kB
[D] rekkord/ (0755) [2023-12-13 15:38:23 +0100]
[F] ENV (0600) [2023-10-05 17:03:45 +0200] 186 B
[F] rekkord.sh (0755) [2023-12-13 15:37:58 +0100] 102 B
[F] rekkord.deb (0644) [2023-12-11 20:45:18 +0100] 5.348 MB
[D] wireguard/ (0755) [2023-09-21 14:28:46 +0200]
[D] safe/ (0755) [2023-09-21 15:59:39 +0200]
[F] docker-compose.yml (0644) [2023-09-21 14:28:47 +0200] 408 B
[F] ENV (0600) [2023-09-21 15:59:39 +0200] 209 B
[D] etc/ (0700) [2023-09-21 14:29:06 +0200]
[F] wg0.json (0640) [2023-12-10 06:00:19 +0100] 7.969 kB
[F] wg0.conf (0600) [2023-12-10 06:00:19 +0100] 4.025 kB
[D] rclone/ (0755) [2023-10-05 15:32:04 +0200]
[F] rclone.cfg (0644) [2023-10-05 15:32:04 +0200] 3.705 kB
[F] rclone.deb (0644) [2023-09-21 14:26:52 +0200] 18.55 MB
[D] coredns/ (0755) [2023-12-13 09:42:56 +0100]
[F] coredns.tar.gz (0644) [2023-09-21 16:50:53 +0200] 15.79 MB
[F] coredns.conf (0644) [2023-09-21 16:50:56 +0200] 132 B
[F] domains.zone (0644) [2023-12-13 09:42:55 +0100] 505 B
[F] coredns (0755) [2023-02-06 19:27:11 +0100] 53.41 MB
[D] nginx/ (0755) [2023-12-11 20:44:06 +0100]
[D] ssl/ (0755) [2023-12-11 20:43:55 +0100]
[D] webroot/ (0755) [2023-09-21 14:28:34 +0200]
[D] vpn.example.com/ (0755) [2023-11-20 19:10:04 +0100]
[F] dhparam.pem (0644) [2023-09-21 14:28:21 +0200] 424 B
[D] letsencrypt/ (0755) [2023-12-11 20:44:22 +0100]
[L] vpn.example.com.crt [2023-12-11 20:44:22 +0100]
[L] 57.128.60.175.key [2023-12-11 20:44:07 +0100]
[L] vpn.example.com.key [2023-12-11 20:44:19 +0100]
[L] 57.128.60.175.crt [2023-12-11 20:44:07 +0100]
[D] internal/ (0755) [2023-12-13 09:43:27 +0100]
[F] ca.crt (0644) [2023-12-13 09:43:24 +0100] 1.883 kB
[F] vpn.crt (0644) [2023-12-13 09:43:26 +0100] 1.891 kB
[F] vpn.key (0644) [2023-12-13 09:43:25 +0100] 1.704 kB
[F] nginx.conf (0644) [2023-12-11 20:44:06 +0100] 7.086 kB
Use --format JSON or --format XML to get the file tree in a JSON or XML format.
Restore snapshot
Use the rekkord restore command to restore the files from a snapshot onto the local filesystem. You can either use the unique object ID, or provide a snapshot channel, in which case rekkord will use the most recent snapshot that matches it.
rekkord restore <identifier> <destination>
Read more about identifiers in the exploration section.
Mount snapshot
You can also use rekkord mount <identifier> <mountpoint> to mount a snapshot or a directory as a read-only filesystem. You can either use the unique object ID, or provide a snapshot channel, in which case rekkord will use the most recent snapshot that matches it.
rekkord mount <identifier> <mountpoint>
Read more about identifiers in the exploration section.
This mode has several limitations for now:
- Only Linux is supported for now, though support for FreeBSD, OpenBSD and Windows will soon come.
- Performance (for listing directories and reading files) is slower than with the dedicated commands.
But the goal is to reach performance similar to other commands once Rekkord 1.0 is released.