Dietmar Maurer
bc616633d5
backup/chunk_store.rs: only use one directory level
2019-01-04 10:35:22 +01:00
Dietmar Maurer
030cc2a903
move admin API to /admin/ subfolder
2019-01-04 10:32:27 +01:00
Dietmar Maurer
b663789bdb
backup/archive_index.rs: pass correct size to unmap
2019-01-04 09:28:41 +01:00
Dietmar Maurer
48d0d35688
backup/image_index.rs: use little endian
2019-01-04 08:45:45 +01:00
Wolfgang Bumiller
4968bc3ac0
cli::command: wrap usage errors in a UsageError
...
So we can distinguish them and show usage output
conditionally.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-03 16:08:51 +01:00
Dietmar Maurer
c7fa487250
catar/encoder.rs: make sure we write all data with write_all()
2019-01-03 15:47:32 +01:00
Dietmar Maurer
050f8a6355
chunker.rs: make sure chunk_size_avg is a power of two
2019-01-03 15:10:54 +01:00
Dietmar Maurer
ea4ea34baf
improve chunker speed (avoid modulo)
2019-01-03 14:35:19 +01:00
Dietmar Maurer
3329ae8c2e
add benchmark for chunker
...
We get about 300MB/s - so this is still not fast enough
Note: This is quite slow with debug target, so please compile with --release
2019-01-02 19:18:53 +01:00
Dietmar Maurer
0b8e75ed16
image_index.rs: verify file size
2019-01-02 18:14:02 +01:00
Dietmar Maurer
77703d95aa
implement garbage collection for .aidx files
2019-01-02 14:27:04 +01:00
Dietmar Maurer
a360f6fa2d
image_index.rs: verify header magic/version
2019-01-02 13:13:13 +01:00
Dietmar Maurer
44b3f62b42
fix typo
2019-01-02 12:56:04 +01:00
Dietmar Maurer
594fa52016
disable debug code
2019-01-02 12:55:18 +01:00
Dietmar Maurer
5032b57b44
archive_index.rs: correctly write .aidx file
2019-01-02 12:54:40 +01:00
Dietmar Maurer
580dc84bac
image_index.rs: print stats
2019-01-02 12:53:49 +01:00
Dietmar Maurer
5e7a09be0d
src/backup/archive_index.rs: use close() instead of flush()
...
Also pass a reference to the encoder.
2019-01-02 11:02:56 +01:00
Dietmar Maurer
94a882e900
src/backup/archive_index.rs: implement flush()
2018-12-31 18:01:07 +01:00
Dietmar Maurer
0433db1949
src/backup/archive_index.rs: first try
2018-12-31 17:30:08 +01:00
Dietmar Maurer
cbdd8c54ae
create backup mod in backup.rs, improve docu
2018-12-31 16:08:04 +01:00
Dietmar Maurer
cb4412b18e
move chunker.rs to backup/
2018-12-31 15:46:16 +01:00
Dietmar Maurer
1c287cb19a
rc/catar/chunker.rs: first try
2018-12-31 13:01:06 +01:00
Dietmar Maurer
bf205f94c5
avoid compiler warnings
2018-12-31 10:54:25 +01:00
Dietmar Maurer
37ea44a540
add another catart test
2018-12-31 10:22:39 +01:00
Dietmar Maurer
a147acfaaf
add catart test for goodbye table ordering
2018-12-31 10:19:15 +01:00
Dietmar Maurer
1b0dc9f680
src/catar/encoder.rs: correctly sort goodbye items by hash key
2018-12-31 10:11:28 +01:00
Dietmar Maurer
c60d34bdbf
new catar binary
...
currently used for debugging
2018-12-30 18:02:46 +01:00
Dietmar Maurer
e75eac73ca
fix doc syntax
2018-12-30 17:43:53 +01:00
Dietmar Maurer
0866748de6
catar cleanups ...
2018-12-30 17:32:52 +01:00
Dietmar Maurer
6cd28d200e
binary_search_tree.rs: fix docs
2018-12-30 15:34:43 +01:00
Dietmar Maurer
3200579ce9
add some integreation tests for catar (compare with casync output)
2018-12-30 15:33:43 +01:00
Dietmar Maurer
389e562524
src/catar/encoder.rs: auto-resize file_copy_buffer, limit number of dirs
2018-12-30 14:09:59 +01:00
Dietmar Maurer
4fa71e0573
improve catar docs
2018-12-30 13:47:27 +01:00
Dietmar Maurer
48147efd12
add a comment about posible improvements
2018-12-29 19:43:25 +01:00
Dietmar Maurer
0b78833d8e
src/catar/binary_search_tree.rs: add regression tests and fix one bug
2018-12-29 18:32:03 +01:00
Dietmar Maurer
b17d7149d2
src/catar/binary_search_tree.rs: improve docu
2018-12-29 17:38:50 +01:00
Dietmar Maurer
985567fb45
src/catar/encoder.rs: cleanup, factor out write_goodbye_table
2018-12-29 17:26:32 +01:00
Dietmar Maurer
95bd5dfec7
src/catar/encoder.rs: correctly sort goodby items
2018-12-29 17:00:48 +01:00
Dietmar Maurer
46b6fbd6ae
use external crate siphasher
...
Because std:#️⃣ :SipHasher is deprecated.
2018-12-28 19:50:07 +01:00
Dietmar Maurer
f0f3029e26
src/catar/encoder.rs: fix bug in file copy
2018-12-28 15:02:42 +01:00
Dietmar Maurer
d05f93215e
src/catar/encoder.rs: fix symlinks
2018-12-28 15:02:42 +01:00
Wolfgang Bumiller
7ebb173352
getopt: cleanup: add trailing commas
...
It is customary in rust to always use trailing commas. (also
suggested by rustfmt)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Wolfgang Bumiller
2767c5d39b
getopt: cleanup: don't condense 'if' statements too much
...
In a language which enforces curly braces this looks weird
and rustfmt doesn't like it.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Wolfgang Bumiller
7d95c10da0
getopt: whitespace cleanup
...
to make rustfmt happy
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Dietmar Maurer
a0cc09b5f0
src/catar/encoder.rs: fix binary format, write goodby table
...
We still ned to sort the table (BST) ...
2018-12-28 14:27:00 +01:00
Wolfgang Bumiller
03fb895197
getopt: condense nested match to reduce indentation
...
The `match value` statement is the only thing covering the
entire RawArgument::Option case. `rustfmt` suggests this
more condensed way of writing this case.
See the `git diff -w` of this patch:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 9755af2..4db4579 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,8 +72,7 @@ pub fn parse_arguments<T: AsRef<str>>(
| RawArgument::Separator => {
| break;
| }
|- RawArgument::Option { name, value } => {
|- match value {
|+ RawArgument::Option { name, value } => match value {
| None => {
| let mut want_bool = false;
| let mut can_default = false;
|@@ -125,7 +124,6 @@ pub fn parse_arguments<T: AsRef<str>>(
| data.push((name, v));
| }
| }
|- }
| RawArgument::Argument { value } => {
| rest.push(value);
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:16:58 +01:00
Wolfgang Bumiller
4d0ea9978b
getopt: let parse_arguments() take a slice of AsRef<str>
...
We don't need the content to be owned strings, and we don't
need the list to be a Vec, since we only care about being
able to iterate through and copy out portions of the strings
we need, so take an &[T] where T: AsRef<str>.
This avoids .iter().map(to_string).collect() before calling
parse_arguments().
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:05:05 +01:00
Wolfgang Bumiller
2482c095b1
getopt: remove skip logic
...
The 'skip' variable was set to indicate that the "rest of
the args" is to be copied into the 'rest' vec. We can do
this directly and avoid the 'if' case in the loop
altogether.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:59:44 +01:00
Wolfgang Bumiller
99da3a073d
getopt: indentation reduction
...
See the `git diff -w` output:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 6548a01..517cc37 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,7 +72,10 @@ pub fn parse_arguments(
| while pos < args.len() {
| if skip {
| rest.push(args[pos].clone());
|- } else {
|+ pos += 1;
|+ continue;
|+ }
|+
| match parse_argument(&args[pos]) {
| RawArgument::Separator => {
| skip = true;
|@@ -135,7 +138,6 @@ pub fn parse_arguments(
| rest.push(value);
| }
| }
|- }
|
| pos += 1;
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:54:20 +01:00
Wolfgang Bumiller
ad8a98f7e4
parse_arguments: work with utf8 bytes and reduce indentation
...
We are only caring about '=' and '-' which are single-byte
codepoints, so there's no reason not to work on a byte
slice.
Also, some indentation reduction:
Transform
if (a) {
...
return A;
}
return B;
into
if (!a)
return B;
return A;
and
if (a)
if (b)
foo()
into
if (a && b)
return;
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:47:29 +01:00