Skip to content

Commit fab2c5f

Browse files
committed
update restic comparison
1 parent 48b20a6 commit fab2c5f

File tree

1 file changed

+42
-35
lines changed

1 file changed

+42
-35
lines changed

src/comparison-restic.md

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
# Comparison between `rustic` and `restic`
22

33
Note that we regularly update this document to compare the latest versions of
4-
rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
4+
rustic and restic. Currently, we compare restic 0.17.1 with rustic 0.9.1.
55

66
## General differences
77

88
| | `restic` | `rustic` |
99
| ---------------------- | ------------------------------------------------- | -------------------------------------------------- |
1010
| programming language | Go | Rust |
11-
| test coverage || ❌ (45% in rustic_core) |
11+
| test coverage || ❌ (46% in rustic_core) |
1212
| config profile support | ❌ (wrapper tools available) ||
1313
| locking | lock files in repository | lock-free operations, two-phase pruning |
1414
| cold storage | ❌ (no direct support, may work in special cases) | ✅ (full support including warm-up of needed data) |
1515
| in-repo config || ✅ (see below for details) |
16-
| logging | `-v` or `--quiet`, no log-file support | `--log-level`, supports log-file output |
17-
| returns error code |||
16+
| logging | `-v` or `--quiet` | `--log-level` |
17+
| allow to log to file |||
18+
| returns error code || (✅) only 0 or 1; not all commands support it |
1819
| available as library || ✅ rustic_core |
1920
| interactive mode (TUI) |||
2021

@@ -104,8 +105,8 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
104105
| `--insecure-tls` |||
105106
| `--json` |||
106107
| `--key-hint` |||
107-
| `--limit-download` || |
108-
| `--limit-upload` || |
108+
| `--limit-download` ||(for opendal option `trottle`) |
109+
| `--limit-upload` ||(for opendal option `trottle`) |
109110
| `--log-file` || ✅ (or in config profile) |
110111
| `--no-cache` || ✅ (or in config profile) |
111112
| `--no-extra-verify` | ✅ needed in every call | ✅ configure once using `config` |
@@ -144,13 +145,18 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
144145

145146
## Snapshot filtering
146147

147-
| filter | `restic` | `rustic` (options also in config profile) |
148-
| -------- | ------------ | ------------------------------------------------- |
149-
| by host |`--host` |`--filter-host` |
150-
| by label ||`--filter-label` |
151-
| by paths |`--paths` |`--filter-paths` |
152-
| by tags |`--tags` |`--filter-tags` |
153-
| custom ||`--filter-fn` (using [Rhai](https://rhai.rs/)) |
148+
| filter | `restic` | `rustic` (options also in config profile) |
149+
| --------------------- | ------------ | ------------------------------------------------- |
150+
| by host |`--host` |`--filter-host` |
151+
| by label ||`--filter-label` |
152+
| by paths |`--paths` |`--filter-paths` |
153+
| by exact pathlists ||`--filter-paths-exact` |
154+
| by tags |`--tags` |`--filter-tags` |
155+
| by exact tagists ||`--filter-tags-exact` |
156+
| by date/time ||`--filter-before`, `filter-after` |
157+
| by size ||`--filter-size` |
158+
| by size added to repo ||`--filter-size-added` |
159+
| custom ||`--filter-fn` (using [Rhai](https://rhai.rs/)) |
154160

155161
## Comparison of important commands
156162

@@ -208,7 +214,7 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
208214
| `--skip-if-unchanged` ||`--skip-identical-parent` |
209215
| `--stdin` || ✅ (use `-` as backup source) |
210216
| `--stdin-filename` |||
211-
| `--stdin-from-command` || |
217+
| `--stdin-from-command` || |
212218
| `--tag` |||
213219
| `--time` |||
214220
| `--with-atime` |||
@@ -315,14 +321,15 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
315321
| check index vs packs |||
316322
| check snapshot files |||
317323
| (optionally) check pack files |||
324+
| only check given snapshots |||
318325
| cache policy | create temporary (use existing: roadmap 0.18) | use existing |
319326
| check cache integrity |||
320327
| check hot/cold integrity | ❌ (no cold storage support) ||
321328

322329
| option | `restic` | `rustic` |
323330
| -------------------- | ----------------------------- | --------------------- |
324331
| `--read-data` |||
325-
| `--read-data-subset` || |
332+
| `--read-data-subset` || |
326333
| `--trust-cache` | ❌ (no cache integrity check) ||
327334
| `--with-cache` || ✅ (default behavior) |
328335

@@ -345,7 +352,7 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
345352
| general | `restic` | `rustic` |
346353
| ----------------------------------------- | -------- | -------- |
347354
| summarize identical snapshots (like `+3`) |||
348-
| show summary information (sizes) | ❌ (WIP) ||
355+
| show summary information (sizes) | ||
349356

350357
| option | `restic` | `rustic` |
351358
| -------------------------- | -------------------- | -------------------------- |
@@ -379,25 +386,25 @@ rustic and restic. Currently, we compare restic 0.17.0 with rustic 0.8.0.
379386
| summarize snapshots with identical result (like `+3`) |||
380387
| fast searching for given full paths |||
381388

382-
| option | `restic` | `rustic` |
383-
| ------------------------------ | -------------------------- | ------------------------- |
384-
| `--all` | ❌ (no summarizing) ||
385-
| `--blob` |||
386-
| `--glob` | ✅ (give patterns as args) ||
387-
| `--group-by` |||
388-
| `--ignore-case` || ✅ (`--iglob`) |
389-
| `--long` || ❌ (default: long output) |
390-
| `--newest` || |
391-
| `--numeric-uid-gid` | ❌ (default: numeric ids) ||
392-
| `--oldest` || |
393-
| `--pack` |||
394-
| `--path` (filter snapshots) ||(use `--filter-path`) |
395-
| `--path` (full path to search) |||
396-
| `--show-pack-id` |||
397-
| `--show-misses` |||
398-
| `--snapshot` || ✅ (give ids as args) |
399-
| `--tag` ||(use `--filter-tags`) |
400-
| `--tree` |||
389+
| option | `restic` | `rustic` |
390+
| ------------------------------ | -------------------------- | -------------------------- |
391+
| `--all` | ❌ (no summarizing) | |
392+
| `--blob` || |
393+
| `--glob` | ✅ (give patterns as args) | |
394+
| `--group-by` || |
395+
| `--ignore-case` || ✅ (`--iglob`) |
396+
| `--long` || ❌ (default: long output) |
397+
| `--newest` || (✅) use `--filter-before` |
398+
| `--numeric-uid-gid` | ❌ (default: numeric ids) | |
399+
| `--oldest` || ✅ use `--filter-after` |
400+
| `--pack` || |
401+
| `--path` (filter snapshots) ||`--filter-path` |
402+
| `--path` (full path to search) || |
403+
| `--show-pack-id` || |
404+
| `--show-misses` || |
405+
| `--snapshot` || ✅ (give ids as args) |
406+
| `--tag` ||`--filter-tags` |
407+
| `--tree` || |
401408

402409
### `diff`
403410

0 commit comments

Comments
 (0)