From 737f78af477829706ef622c361404eb4ef3982b2 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Thu, 27 Apr 2017 13:35:48 +0200 Subject: [PATCH] Released v0.3.0 --- CHANGELOG.md | 3 +- Cargo.lock | 132 +++++++++++++++++++++--------------- Cargo.toml | 13 ++-- deb/zvault/debian/changelog | 19 ++++++ src/bundledb/db.rs | 6 +- src/bundledb/mod.rs | 4 +- src/main.rs | 1 + src/repository/backup.rs | 2 +- src/repository/basic_io.rs | 2 +- src/repository/integrity.rs | 14 ++-- src/repository/metadata.rs | 4 +- src/util/chunk.rs | 6 +- src/util/encryption.rs | 2 +- src/util/hash.rs | 6 +- src/util/msgpack.rs | 6 +- 15 files changed, 133 insertions(+), 87 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f53d2b..3ea421d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,11 @@ This project follows [semantic versioning](http://semver.org). -### UNRELEASED +### v0.3.0 (2017-04-27) * [added] Ability to read/write tar file from/to stdin/stdout * [added] Added date to bundles * [added] Option to combine small bundles +* [added] Fixed chunker * [modified] Logging to stderr * [modified] Enforce deterministic bundle ordering * [modified] More info in analyze subcommand diff --git a/Cargo.lock b/Cargo.lock index 35e7622..7a7971d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,34 +1,35 @@ [root] name = "zvault" -version = "0.2.0" +version = "0.3.0" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "chunking 0.1.0", - "clap 2.23.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.23.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "fuse 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "index 0.1.0", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "murmurhash3 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rmp-serde 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_utils 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp-serde 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_bytes 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_utils 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_yaml 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "sodiumoxide 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)", "squash-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "users 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -52,7 +53,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -85,19 +86,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chunking" version = "0.1.0" dependencies = [ - "quick-error 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clap" -version = "2.23.2" +version = "2.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -125,7 +126,7 @@ name = "filetime" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -133,11 +134,11 @@ name = "fuse" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "thread-scoped 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -145,7 +146,7 @@ name = "index" version = "0.1.0" dependencies = [ "mmap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -169,7 +170,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -177,7 +178,7 @@ name = "libsodium-sys" version = "0.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -186,6 +187,11 @@ name = "linked-hash-map" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "linked-hash-map" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "log" version = "0.3.7" @@ -196,7 +202,7 @@ name = "memchr" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -251,8 +257,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -263,7 +269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quick-error" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -271,7 +277,7 @@ name = "rand" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -298,7 +304,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rmp" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -307,34 +313,49 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "0.12.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rmp 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde" -version = "0.9.13" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "serde_utils" -version = "0.5.2" +name = "serde" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde_bytes" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_utils" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_bytes 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_yaml" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -343,9 +364,9 @@ name = "sodiumoxide" version = "0.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "libsodium-sys 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -354,7 +375,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -369,7 +390,7 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -387,7 +408,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -397,7 +418,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -416,11 +437,11 @@ dependencies = [ [[package]] name = "time" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -448,7 +469,7 @@ name = "users" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -481,7 +502,7 @@ name = "xattr" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -501,7 +522,7 @@ dependencies = [ "checksum blake2-rfc 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "0c6a476f32fef3402f1161f89d0d39822809627754a126f8441ff2a9d45e2d59" "checksum byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c40977b0ee6b9885c9013cd41d9feffdd22deb3bb4dc3a71d901cc7a77de18c8" "checksum chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "158b0bd7d75cbb6bf9c25967a48a2e9f77da95876b858eadfabaa99cd069de6e" -"checksum clap 2.23.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf1114886d7cde2d6448517161d7db8d681a9a1c09f7d210f0b0864e48195f6" +"checksum clap 2.23.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f57e9b63057a545ad2ecd773ea61e49422ed1b1d63d74d5da5ecaee55b3396cd" "checksum constant_time_eq 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "07dcb7959f0f6f1cf662f9a7ff389bcb919924d99ac41cf31f10d611d8721323" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" "checksum filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "5363ab8e4139b8568a6237db5248646e5a8a2f89bd5ccb02092182b11fd3e922" @@ -509,9 +530,10 @@ dependencies = [ "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3b37545ab726dd833ec6420aaba8231c5b320814b9029ad585555d2a03e94fbf" "checksum libc 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "e32a70cf75e5846d53a673923498228bbec6a8624708a9ea5645f075d6276122" -"checksum libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "88ee81885f9f04bff991e306fea7c1c60a5f0f9e409e99f6b40e3311a3363135" +"checksum libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)" = "babb8281da88cba992fa1f4ddec7d63ed96280a1a53ec9b919fd37b53d71e502" "checksum libsodium-sys 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cbbc6e46017815abf8698de0ed4847fad45fd8cad2909ac38ac6de79673c1ad1" "checksum linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d262045c5b87c0861b3f004610afd0e2c851e2908d08b6c870cbb9d5f494ecd" +"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5141eca02775a762cc6cd564d8d2c50f67c0ea3a372cbf1c51592b3e029e10ad" "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum mmap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc85448a6006dd2ba26a385a564a8a0f1f2c7e78c70f1a70b2e0f4af286b823" @@ -522,16 +544,18 @@ dependencies = [ "checksum num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e1cbfa3781f3fe73dc05321bed52a06d2d491eaa764c52335cf4399f046ece99" "checksum pbr 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e048e3afebb6c454bb1c5d0fe73fda54698b4715d78ed8e7302447c37736d23a" "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" -"checksum quick-error 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0aad603e8d7fb67da22dbdf1f4b826ce8829e406124109e73cf1b2454b93a71c" +"checksum quick-error 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c36987d4978eb1be2e422b1e0423a557923a5c3e7e6f31d5699e9aafaefa469" "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "29dbdfd4b9df8ab31dec47c6087b7b13cbf4a776f335e4de8efba8288dda075b" "checksum regex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4278c17d0f6d62dfef0ab00028feb45bd7d2102843f80763474eeb1be8a10c01" "checksum regex-syntax 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9191b1f57603095f105d317e375d19b1c9c5c3185ea9633a99a6dcbed04457" -"checksum rmp 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "333f01365885cb192edaa22acb06d7e2f196bfd19d6969419e8b61307e0710ea" -"checksum rmp-serde 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0b34c070f2a928d7786da44bfdb4372b547326bbc4757bd0696878558eac0bd" -"checksum serde 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)" = "231dfd55909400769e437326cfb4af8bec97c3dd56ab3d02df8ef5c7e00f179b" -"checksum serde_utils 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c6fbfe71b80337654f81dfc667315ed6908e9303972bf719aacc919d491af0db" -"checksum serde_yaml 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f8bd3f24ad8c7bcd34a6d70ba676dc11302b96f4f166aa5f947762e01098844d" +"checksum rmp 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ce560a5728f4eec697f07f8d7fa20608893d44b4f5b8f9f5f51a2987f3cffe2" +"checksum rmp-serde 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe9599387fbc9af1a86a3ad0dc400f958acd6142a1e9c3167ff2acaefa591232" +"checksum serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" +"checksum serde 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1be24992f20bb7dfb9932a152a6f51ed7f756ebd8df1ea707ecab09d615d3ede" +"checksum serde_bytes 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a73f5ad9bb83e1e407254c7a355f4efdaffe3c1442fc0657ddb8b9b6b225655" +"checksum serde_utils 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6e0edb364c93646633800df969086bc7c5c25fb3f1eb57349990d1cb4cae4bc" +"checksum serde_yaml 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67dbc8620027a35776aa327847d48f70fd4531a1d2b7774f26247869b508d1b2" "checksum sodiumoxide 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "bc02c0bc77ffed8e8eaef004399b825cf4fd8aa02d0af6e473225affd583ff4d" "checksum squash-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db1f9dde91d819b7746e153bc32489fa19e6a106c3d7f2b92187a4efbdc88b40" "checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" @@ -541,7 +565,7 @@ dependencies = [ "checksum thread-id 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4437c97558c70d129e40629a5b385b3fb1ffac301e63941335e4d354081ec14a" "checksum thread-scoped 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14387dce246d09efe184c8ebc34d9db5c0672a908b2f50efc53359ae13d5ae68" "checksum thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7" -"checksum time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "211b63c112206356ef1ff9b19355f43740fc3f85960c598a93d3a3d3ba7beade" +"checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3" "checksum unicode-segmentation 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18127285758f0e2c6cf325bb3f3d138a12fee27de4f23e146cd6a179f26c2cf3" "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" "checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" diff --git a/Cargo.toml b/Cargo.toml index ca42774..3142e21 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,14 +1,15 @@ [package] name = "zvault" -version = "0.2.0" +version = "0.3.0" authors = ["Dennis Schwerdel "] description = "Deduplicating backup tool" [dependencies] -serde = "0.9" -rmp-serde = "0.12" -serde_yaml = "0.6" -serde_utils = "0.5.2" +serde = "1.0" +rmp-serde = "0.13" +serde_yaml = "0.7" +serde_utils = "0.6" +serde_bytes = "0.10" squash-sys = "0.9" quick-error = "1.1" blake2-rfc = "0.2" @@ -30,7 +31,7 @@ crossbeam = "0.2" pbr = "1.0" users = "0.5" time = "*" -libc = "*" +libc = "0.2" index = {path="index"} chunking = {path="chunking"} diff --git a/deb/zvault/debian/changelog b/deb/zvault/debian/changelog index 1acf3d1..e3c90c0 100644 --- a/deb/zvault/debian/changelog +++ b/deb/zvault/debian/changelog @@ -1,3 +1,22 @@ +zvault (0.3.0) stable; urgency=medium + + * [added] Ability to read/write tar file from/to stdin/stdout + * [added] Added date to bundles + * [added] Option to combine small bundles + * [added] Fixed chunker + * [modified] Logging to stderr + * [modified] Enforce deterministic bundle ordering + * [modified] More info in analyze subcommand + * [modified] Estimating final bundle size in order to reach it + * [fixed] Only print "repairing bundles" if actually repairing bundles + * [fixed] Only put mode bits of st_mode into metadata + * [fixed] Only repairing backups with --repair + * [fixed] Fixed vacuum + * [fixed] First removing bundles, then adding new ones + * [fixed] No longer clobbering broken files + + -- Dennis Schwerdel Thu, 27 Apr 2017 13:34:34 +0200 + zvault (0.2.0) stable; urgency=medium * [added] Added CHANGELOG diff --git a/src/bundledb/db.rs b/src/bundledb/db.rs index 5e704fc..740f3d6 100644 --- a/src/bundledb/db.rs +++ b/src/bundledb/db.rs @@ -255,13 +255,13 @@ impl BundleDb { let id = bundle.id(); let (folder, filename) = self.layout.local_bundle_path(&id, self.local_bundles.len()); try!(fs::create_dir_all(&folder).context(&folder as &Path)); - let bundle = try!(bundle.copy_to(&self.layout.base_path(), folder.join(filename))); + let bundle = try!(bundle.copy_to(self.layout.base_path(), folder.join(filename))); self.local_bundles.insert(id, bundle); Ok(()) } pub fn add_bundle(&mut self, bundle: BundleWriter) -> Result { - let mut bundle = try!(bundle.finish(&self)); + let mut bundle = try!(bundle.finish(self)); if bundle.info.mode == BundleMode::Meta { try!(self.copy_remote_bundle_to_cache(&bundle)) } @@ -288,7 +288,7 @@ impl BundleDb { } pub fn get_chunk_list(&self, bundle: &BundleId) -> Result { - let mut bundle = try!(self.get_stored_bundle(bundle).and_then(|stored| self.get_bundle(&stored))); + let mut bundle = try!(self.get_stored_bundle(bundle).and_then(|stored| self.get_bundle(stored))); Ok(try!(bundle.get_chunk_list()).clone()) } diff --git a/src/bundledb/mod.rs b/src/bundledb/mod.rs index d9efc1d..0c210fa 100644 --- a/src/bundledb/mod.rs +++ b/src/bundledb/mod.rs @@ -31,9 +31,9 @@ impl Serialize for BundleId { } } -impl Deserialize for BundleId { +impl<'a> Deserialize<'a> for BundleId { #[inline] - fn deserialize(de: D) -> Result { + fn deserialize>(de: D) -> Result { let hash = try!(Hash::deserialize(de)); Ok(BundleId(hash)) } diff --git a/src/main.rs b/src/main.rs index 7e97a73..b98c543 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ #![recursion_limit="128"] #![allow(unknown_lints, float_cmp)] extern crate serde; +extern crate serde_bytes; extern crate rmp_serde; #[macro_use] extern crate serde_utils; extern crate squash_sys as squash; diff --git a/src/repository/backup.rs b/src/repository/backup.rs index c3562c4..84103e1 100644 --- a/src/repository/backup.rs +++ b/src/repository/backup.rs @@ -160,7 +160,7 @@ impl Repository { if inode.file_type == FileType::Directory { let path = path.join(inode.name); for chunks in inode.children.unwrap().values() { - let inode = try!(self.get_inode(&chunks)); + let inode = try!(self.get_inode(chunks)); queue.push_back((path.clone(), inode)); } } diff --git a/src/repository/basic_io.rs b/src/repository/basic_io.rs index 78383b7..7f0ec30 100644 --- a/src/repository/basic_io.rs +++ b/src/repository/basic_io.rs @@ -201,7 +201,7 @@ impl Repository { pub fn get_stream(&mut self, chunks: &[Chunk], w: &mut W) -> Result<(), RepositoryError> { for &(ref hash, len) in chunks { - let data = try!(try!(self.get_chunk(*hash)).ok_or_else(|| IntegrityError::MissingChunk(hash.clone()))); + let data = try!(try!(self.get_chunk(*hash)).ok_or_else(|| IntegrityError::MissingChunk(*hash))); debug_assert_eq!(data.len() as u32, len); try!(w.write_all(&data)); } diff --git a/src/repository/integrity.rs b/src/repository/integrity.rs index bec4faf..8a5d563 100644 --- a/src/repository/integrity.rs +++ b/src/repository/integrity.rs @@ -97,7 +97,7 @@ impl Repository { }, Some(FileData::ChunkedIndirect(ref chunks)) => { if try!(self.check_chunks(checked, chunks, true)) { - let chunk_data = try!(self.get_data(&chunks)); + let chunk_data = try!(self.get_data(chunks)); let chunks = ChunkList::read_from(&chunk_data); try!(self.check_chunks(checked, &chunks, true)); } @@ -191,12 +191,12 @@ impl Repository { try!(self.flush()); backup.root = chunks; backup.modified = true; - try!(self.evacuate_broken_backup(&name)); - try!(self.save_backup(&backup, &name)); + try!(self.evacuate_broken_backup(name)); + try!(self.save_backup(backup, name)); }, Err(err) => if repair { warn!("The root of the backup {} has been corrupted\n\tcaused by: {}", name, err); - try!(self.evacuate_broken_backup(&name)); + try!(self.evacuate_broken_backup(name)); } else { return Err(err) } @@ -213,7 +213,7 @@ impl Repository { }; info!("Checking inode..."); let mut checked = Bitmap::new(self.index.capacity()); - let mut inodes = try!(self.get_backup_path(&backup, path)); + let mut inodes = try!(self.get_backup_path(backup, path)); let mut inode = inodes.pop().unwrap(); let mut modified = false; if let Err(err) = self.check_inode_contents(&inode, &mut checked) { @@ -260,8 +260,8 @@ impl Repository { try!(self.flush()); backup.root = chunks; backup.modified = true; - try!(self.evacuate_broken_backup(&name)); - try!(self.save_backup(&backup, &name)); + try!(self.evacuate_broken_backup(name)); + try!(self.save_backup(backup, name)); } Ok(()) } diff --git a/src/repository/metadata.rs b/src/repository/metadata.rs index 5e5b54e..e18013c 100644 --- a/src/repository/metadata.rs +++ b/src/repository/metadata.rs @@ -249,7 +249,7 @@ impl Inode { #[inline] pub fn decode(data: &[u8]) -> Result { - Ok(try!(msgpack::decode(&data))) + Ok(try!(msgpack::decode(data))) } } @@ -299,7 +299,7 @@ impl Repository { if let Some(ref contents) = inode.data { match *contents { FileData::Inline(ref data) => { - try!(file.write_all(&data)); + try!(file.write_all(data)); }, FileData::ChunkedDirect(ref chunks) => { try!(self.get_stream(chunks, &mut file)); diff --git a/src/util/chunk.rs b/src/util/chunk.rs index 7711583..b60d258 100644 --- a/src/util/chunk.rs +++ b/src/util/chunk.rs @@ -2,7 +2,7 @@ use std::io::{self, Write, Read, Cursor}; use std::ops::{Deref, DerefMut}; use serde::{self, Serialize, Deserialize}; -use serde::bytes::{Bytes, ByteBuf}; +use serde_bytes::{Bytes, ByteBuf}; use serde::de::Error; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -118,9 +118,9 @@ impl Serialize for ChunkList { } } -impl Deserialize for ChunkList { +impl<'a> Deserialize<'a> for ChunkList { #[inline] - fn deserialize(deserializer: D) -> Result where D: serde::Deserializer { + fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'a> { let data: Vec = try!(ByteBuf::deserialize(deserializer)).into(); if data.len() % 20 != 0 { return Err(D::Error::custom("Invalid chunk list length")); diff --git a/src/util/encryption.rs b/src/util/encryption.rs index 64b3849..46010fc 100644 --- a/src/util/encryption.rs +++ b/src/util/encryption.rs @@ -5,7 +5,7 @@ use std::fs::{self, File}; use std::sync::{Once, ONCE_INIT}; use serde_yaml; -use serde::bytes::ByteBuf; +use serde_bytes::ByteBuf; use sodiumoxide; use sodiumoxide::crypto::sealedbox; diff --git a/src/util/hash.rs b/src/util/hash.rs index f93bd1c..9cf2ee0 100644 --- a/src/util/hash.rs +++ b/src/util/hash.rs @@ -1,6 +1,6 @@ use serde::{self, Serialize, Deserialize}; use serde::de::Error; -use serde::bytes::{ByteBuf, Bytes}; +use serde_bytes::{ByteBuf, Bytes}; use murmurhash3::murmurhash3_x64_128; use blake2::blake2b::blake2b; @@ -80,8 +80,8 @@ impl Serialize for Hash { } } -impl Deserialize for Hash { - fn deserialize(deserializer: D) -> Result where D: serde::Deserializer { +impl<'a> Deserialize<'a> for Hash { + fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'a> { let dat: Vec = try!(ByteBuf::deserialize(deserializer)).into(); if dat.len() != 16 { return Err(D::Error::custom("Invalid key length")); diff --git a/src/util/msgpack.rs b/src/util/msgpack.rs index 1962435..ada3ce1 100644 --- a/src/util/msgpack.rs +++ b/src/util/msgpack.rs @@ -3,7 +3,7 @@ use serde::{Serialize, Deserialize}; use std::io::{Write, Read, Cursor}; -pub use serde::bytes::ByteBuf as Bytes; +pub use serde_bytes::ByteBuf as Bytes; pub use rmp_serde::decode::Error as DecodeError; pub use rmp_serde::encode::Error as EncodeError; @@ -25,14 +25,14 @@ pub fn encode_to_stream(t: &T, w: &mut Write) -> Result<(), Encode } #[inline] -pub fn decode(data: &[u8]) -> Result { +pub fn decode<'a, T: Deserialize<'a>>(data: &[u8]) -> Result { let data = Cursor::new(data); let mut reader = rmp_serde::Deserializer::new(data); T::deserialize(&mut reader) } #[inline] -pub fn decode_from_stream(r: &mut Read) -> Result { +pub fn decode_from_stream<'a, T: Deserialize<'a>>(r: &mut Read) -> Result { let mut reader = rmp_serde::Deserializer::new(r); T::deserialize(&mut reader) }