iAdd -k option to dup-init(1) - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit a1037d78c0b5a6d557e520a87d484e77168610b9 /scm/dedup/commit/a1037d78c0b5a6d557e520a87d484e77168610b9.gph bitreich.org 70 1parent d0213e5514ecb4a49986054e94943ff3016c5766 /scm/dedup/commit/d0213e5514ecb4a49986054e94943ff3016c5766.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Thu, 2 May 2019 23:32:12 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd -k option to dup-init(1) Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dup-init.1 | 5 ++++- Err bitreich.org 70 i M dup-init.c | 26 ++++++++++++++++++++++++-- Err bitreich.org 70 i M test006 | 2 +- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 29 insertions(+), 4 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dup-init.1 b/dup-init.1 /scm/dedup/file/dup-init.1.gph bitreich.org 70 i@@ -9,6 +9,7 @@ Err bitreich.org 70 i .Op Fl v Err bitreich.org 70 i .Op Fl E Ar algo Err bitreich.org 70 i .Op Fl Z Ar algo Err bitreich.org 70 i+.Op Fl k Ar keyfile Err bitreich.org 70 i .Op repo Err bitreich.org 70 i .Sh DESCRIPTION Err bitreich.org 70 i .Nm Err bitreich.org 70 i@@ -17,7 +18,7 @@ If no Err bitreich.org 70 i .Ar repo Err bitreich.org 70 i is specified the current working directory is used. Err bitreich.org 70 i .Sh OPTIONS Err bitreich.org 70 i-.Bl -tag -width "-Z algo" Err bitreich.org 70 i+.Bl -tag -width "-k keyfile" Err bitreich.org 70 i .It Fl E Ar algo Err bitreich.org 70 i The encryption algorithm used to encrypt the blocks Err bitreich.org 70 i in the store. Err bitreich.org 70 i@@ -30,6 +31,8 @@ in the store. Err bitreich.org 70 i The supported compressor algorithms are none and snappy. Err bitreich.org 70 i This flag only has an effect when initializing the repository. Err bitreich.org 70 i By default snappy is used. Err bitreich.org 70 i+.It Fl k Ar keyfile Err bitreich.org 70 i+Path to encryption key. Err bitreich.org 70 i .It Fl v Err bitreich.org 70 i Enable verbose mode. Err bitreich.org 70 i .El Err bitreich.org 70 1diff --git a/dup-init.c b/dup-init.c /scm/dedup/file/dup-init.c.gph bitreich.org 70 i@@ -2,13 +2,15 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i #include "arg.h" Err bitreich.org 70 i-#include "config.h" Err bitreich.org 70 i #include "block.h" Err bitreich.org 70 i+#include "config.h" Err bitreich.org 70 i+#include "key.h" Err bitreich.org 70 i #include "snap.h" Err bitreich.org 70 i Err bitreich.org 70 i int verbose; Err bitreich.org 70 i@@ -17,21 +19,26 @@ char *argv0; Err bitreich.org 70 i static void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i- fprintf(stderr, "usage: %s [-v] [-E algo] [-Z algo] [repo]\n", argv0); Err bitreich.org 70 i+ fprintf(stderr, "usage: %s [-v] [-E algo] [-Z algo] [-k keyfile] [repo]\n", argv0); Err bitreich.org 70 i exit(1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i+ unsigned char key[KEYSIZE]; Err bitreich.org 70 i struct bctx *bctx; /* block context */ Err bitreich.org 70 i struct bparam bpar; Err bitreich.org 70 i+ char *keyfile = NULL; Err bitreich.org 70 i char *repo; Err bitreich.org 70 i Err bitreich.org 70 i bpar.calgo = bparamdef()->calgo; Err bitreich.org 70 i bpar.ealgo = bparamdef()->ealgo; Err bitreich.org 70 i Err bitreich.org 70 i ARGBEGIN { Err bitreich.org 70 i+ case 'k': Err bitreich.org 70 i+ keyfile = EARGF(usage()); Err bitreich.org 70 i+ break; Err bitreich.org 70 i case 'E': Err bitreich.org 70 i bpar.ealgo = EARGF(usage()); Err bitreich.org 70 i break; Err bitreich.org 70 i@@ -56,6 +63,21 @@ main(int argc, char *argv[]) Err bitreich.org 70 i usage(); Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i+ if (keyfile != NULL) { Err bitreich.org 70 i+ int fd; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fd = open(keyfile, O_RDONLY); Err bitreich.org 70 i+ if (fd < 0) Err bitreich.org 70 i+ err(1, "open: %s", keyfile); Err bitreich.org 70 i+ if (loadkey(fd, key, sizeof(key)) < 0) Err bitreich.org 70 i+ errx(1, "loadkey: failed"); Err bitreich.org 70 i+ bpar.key = key; Err bitreich.org 70 i+ if (close(fd) < 0) Err bitreich.org 70 i+ err(1, "close: %s", keyfile); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ bpar.key = NULL; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i mkdir(repo, 0700); Err bitreich.org 70 i if (chdir(repo) < 0) Err bitreich.org 70 i err(1, "chdir: %s", repo); Err bitreich.org 70 1diff --git a/test006 b/test006 /scm/dedup/file/test006.gph bitreich.org 70 i@@ -6,7 +6,7 @@ repo=`mktemp -d` Err bitreich.org 70 i data=`mktemp` Err bitreich.org 70 i dd if=/dev/urandom of="$data" bs=1M count=64 Err bitreich.org 70 i ./dup-keygen "$keyfile" Err bitreich.org 70 i-./dup-init -E XChaCha20-Poly1305 "$repo" Err bitreich.org 70 i+./dup-init -E XChaCha20-Poly1305 -k "$keyfile" "$repo" Err bitreich.org 70 i ./dup-pack -k "$keyfile" -r "$repo" snap0 < "$data" Err bitreich.org 70 i ./dup-gc -k "$keyfile" "$repo" Err bitreich.org 70 i ./dup-rm -k "$keyfile" -r "$repo" snap0 < "$data" Err bitreich.org 70 .