summaryrefslogtreecommitdiff
path: root/gnu/packages/backup.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/backup.scm')
-rw-r--r--gnu/packages/backup.scm145
1 files changed, 100 insertions, 45 deletions
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index c8382536b0..74e3f2ce01 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -2,12 +2,12 @@
;;; Copyright © 2014, 2015, 2020 Eric Bavier <[email protected]>
;;; Copyright © 2014 Ian Denhardt <[email protected]>
;;; Copyright © 2015, 2016, 2017 Leo Famulari <[email protected]>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <[email protected]>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <[email protected]>
;;; Copyright © 2017 Thomas Danckaert <[email protected]>
;;; Copyright © 2017 Arun Isaac <[email protected]>
;;; Copyright © 2017 Kei Kebreau <[email protected]>
;;; Copyright © 2017, 2020 Efraim Flashner <[email protected]>
-;;; Copyright © 2017 Christopher Allan Webber <[email protected]>
+;;; Copyright © 2017 Christine Lemmer-Webber <[email protected]>
;;; Copyright © 2017 Rutger Helling <[email protected]>
;;; Copyright © 2018 Mark H Weaver <[email protected]>
;;; Copyright © 2018 Oleg Pykhalov <[email protected]>
@@ -19,6 +19,8 @@
;;; Copyright © 2020 Marcin Karpezo <[email protected]>
;;; Copyright © 2020 Michael Rohleder <[email protected]>
;;; Copyright © 2021 Timothy Sample <[email protected]>
+;;; Copyright © 2021 Brice Waegeneire <[email protected]>
+;;; Copyright © 2021 Sarah Morgensen <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -80,12 +82,13 @@
#:use-module (gnu packages rsync)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages valgrind)
#:use-module (gnu packages xml))
(define-public duplicity
(package
(name "duplicity")
- (version "0.8.17")
+ (version "0.8.20")
(source
(origin
(method url-fetch)
@@ -94,7 +97,7 @@
"-series/" version "/+download/duplicity-"
version ".tar.gz"))
(sha256
- (base32 "114rwkf9b3h4fcagrx013sb7krc4hafbwl9gawjph2wd9pkv2wx2"))))
+ (base32 "0d125mxknpn44xwgqzzak9y5ydigscrpjv9d63126mfc6yfngr5v"))))
(build-system python-build-system)
(native-inputs
`(("gettext" ,gettext-minimal) ; for msgfmt
@@ -102,6 +105,7 @@
("par2cmdline" ,par2cmdline)
("python-fasteners" ,python-fasteners)
("python-future" ,python-future) ; for tests
+ ("python-paramiko" ,python-paramiko)
("python-pexpect" ,python-pexpect)
("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)
@@ -130,12 +134,15 @@
"testing/overrides/bin/lftp")
(("/bin/sh") (which "sh")))
#t))
- (add-before 'check 'check-setup
+ (add-before 'check 'set-up-tests
(lambda* (#:key inputs #:allow-other-keys)
(setenv "HOME" (getcwd)) ; gpg needs to write to $HOME
(setenv "TZDIR" ; some timestamp checks need TZDIR
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo"))
+ ;; Some things respect TMPDIR, others hard-code /tmp, and the
+ ;; defaults don't match up, breaking test_restart. Fix it.
+ (setenv "TMPDIR" "/tmp")
#t)))))
(home-page "http://duplicity.nongnu.org/index.html")
(synopsis "Encrypted backup using rsync algorithm")
@@ -378,6 +385,65 @@ file names to standard output. Auxiliary scripts are needed that act on this
list and implement the backup strategy.")
(license license:gpl3+)))
+(define-public snapraid
+ (package
+ (name "snapraid")
+ (version "11.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/amadvance/snapraid")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0dlhdsmq5l208zldfr9z9g0p67wry81dr0r23lpybb5c9fm2f2rm"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--enable-valgrind"
+ "--with-blkid")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'bootstrap 'set-version
+ (lambda _
+ (setenv "VERSION" ,version)
+ (patch-shebang "autover.sh"))))))
+ (native-inputs
+ `(("automake" ,automake)
+ ("autoconf" ,autoconf)
+
+ ;; For the tests.
+ ("valgrind" ,valgrind)))
+ (inputs
+ `(("util-linux" ,util-linux "lib"))) ; libblkid
+ (home-page "https://www.snapraid.it/")
+ (synopsis "Efficient backups using parity snapshots across disk arrays")
+ (description
+ "SnapRAID backs up files stored across multiple storage devices, such as
+disk arrays, in an efficient way reminiscent of its namesake @acronym{RAID,
+Redundant Array of Independent Disks} level 4.
+
+Instead of creating a complete copy of the data like classic backups do, it
+saves space by calculating one or more sets of parity information that's a
+fraction of the size. Each parity set is stored on an additional device the
+size of the largest single storage volume, and protects against the loss of any
+one device, up to a total of six. If more devices fail than there are parity
+sets, (only) the files they contained are lost, not the entire array. Data
+corruption by unreliable devices can also be detected and repaired.
+
+SnapRAID is distinct from actual RAID in that it operates on files and creates
+distinct snapshots only when run. It mainly targets large collections of big
+files that rarely change, like home media centers. One disadvantage is that
+@emph{all} data not in the latest snapshot may be lost if one device fails. An
+advantage is that accidentally deleted files can be recovered, which is not the
+case with RAID.
+
+It's also more flexible than true RAID: devices can have different sizes and
+more can be added without disturbing others. Devices that are not in use can
+remain fully idle, saving power and producing less noise.")
+ (license license:gpl3+)))
+
(define-public btar
(package
(name "btar")
@@ -448,7 +514,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
(define-public rsnapshot
(package
(name "rsnapshot")
- (version "1.4.3")
+ (version "1.4.4")
(source
(origin
(method url-fetch)
@@ -456,22 +522,13 @@ rdiff-backup is easy to use and settings have sensible defaults.")
"https://github.com/rsnapshot/rsnapshot/releases/download/"
version "/rsnapshot-" version ".tar.gz"))
(sha256
- (base32 "1lavqmmsf53pim0nvming7fkng6p0nk2a51k2c2jdq0l7snpl31b"))))
+ (base32 "0yc5k2fhm54ypxgm1fsaf8vrg5b7qbvbsqk371n6baf592vprjy1"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
- (substitute* '("t/cmd-post_pre-exec/conf/pre-true-post-true.conf"
- "t/backup_exec/conf/backup_exec_fail.conf"
- "t/backup_exec/conf/backup_exec.conf")
- (("/bin/true") (which "true"))
- (("/bin/false") (which "false")))
-
- ;; Disable a test that tries to connect to localhost on port 22.
- (delete-file "t/ssh_args/ssh_args.t.in")
-
(invoke "make" "test"))))))
(inputs
`(("perl" ,perl)
@@ -572,13 +629,13 @@ detection, and lossless compression.")
(define-public borg
(package
(name "borg")
- (version "1.1.16")
+ (version "1.1.17")
(source
(origin
(method url-fetch)
(uri (pypi-uri "borgbackup" version))
(sha256
- (base32 "0l1dqfwrd9l34rg30cmzmq5bs6yha6kg4vy313jq611jsqj94mmw"))
+ (base32 "0x0ncy0b0bmf586hbdgrif3gjmkdw760vfnfxndr493v07y29fbs"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -603,12 +660,7 @@ detection, and lossless compression.")
;; Remove bundled shared libraries.
(with-directory-excursion "src/borg/algorithms"
(for-each delete-file-recursively
- (list "blake2" "lz4" "msgpack" "zstd")))
- ;; Purge some msgpack references from setup.py or the resulting
- ;; sources will be unbuildable.
- (substitute* "setup.py"
- ((".*Extension\\('borg\\.algorithms\\.msgpack\\..*") "")
- (("msgpack_packer_source, msgpack_unpacker_source") ""))
+ (list "blake2" "lz4" "zstd")))
#t))))
(build-system python-build-system)
(arguments
@@ -632,12 +684,6 @@ detection, and lossless compression.")
;; HOME=/homeless-shelter.
(setenv "HOME" "/tmp")
#t)))
- (add-after 'unpack 'use-system-msgpack
- (lambda _
- (substitute* "src/borg/helpers.py"
- (("prefer_system_msgpack = False")
- "prefer_system_msgpack = True"))
- #t))
;; The tests need to be run after Borg is installed.
(delete 'check)
(add-after 'install 'check
@@ -701,10 +747,6 @@ detection, and lossless compression.")
("lz4" ,lz4)
("openssl" ,openssl)
("python-llfuse" ,python-llfuse)
- ;; The Python msgpack library changed its name so Borg requires this
- ;; transitional package for now:
- ;; <https://bugs.gnu.org/30662>
- ("python-msgpack" ,python-msgpack-transitional)
("zstd" ,zstd "lib")))
(synopsis "Deduplicated, encrypted, authenticated and compressed backups")
(description "Borg is a deduplicating backup program. Optionally, it
@@ -719,14 +761,14 @@ to not fully trusted targets. Borg is a fork of Attic.")
(define-public wimlib
(package
(name "wimlib")
- (version "1.13.3")
+ (version "1.13.4")
(source (origin
(method url-fetch)
(uri (string-append "https://wimlib.net/downloads/"
"wimlib-" version ".tar.gz"))
(sha256
(base32
- "0zpsbl9iicc6y81xfl6kf8farwfsyrl63shc0idp654kgp8421wa"))))
+ "04ny5s5z05gk6davbwkjkraan781k2xzw6kjwp75h6ncv45dv1sb"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -736,7 +778,9 @@ to not fully trusted targets. Borg is a fork of Attic.")
("ntfs-3g" ,ntfs-3g)
("openssl" ,openssl)))
(arguments
- `(#:configure-flags (list "--enable-test-support")))
+ `(#:configure-flags
+ (list "--disable-static"
+ "--enable-test-support")))
(home-page "https://wimlib.net/")
(synopsis "WIM file manipulation library and utilities")
(description "wimlib is a C library and set of command-line utilities for
@@ -871,7 +915,9 @@ is like a time machine for your data. ")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))))
+ "1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))
+ (patches
+ (search-patches "restic-0.9.6-fix-tests-for-go1.15.patch"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/restic/restic"
@@ -888,11 +934,12 @@ is like a time machine for your data. ")
(invoke "go" "run" "build.go"))))
(replace 'check
- (lambda _
- (with-directory-excursion "src/github.com/restic/restic"
- ;; Disable FUSE tests.
- (setenv "RESTIC_TEST_FUSE" "0")
- (invoke "go" "run" "build.go" "--test"))))
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "src/github.com/restic/restic"
+ ;; Disable FUSE tests.
+ (setenv "RESTIC_TEST_FUSE" "0")
+ (invoke "go" "run" "build.go" "--test")))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
@@ -1091,19 +1138,27 @@ backup.")
(define-public disarchive
(package
(name "disarchive")
- (version "0.2.0")
+ (version "0.2.1")
(source (origin
(method url-fetch)
(uri (string-append "https://files.ngyro.com/disarchive/"
"disarchive-" version ".tar.gz"))
(sha256
(base32
- "12d4r4i7vi8fxilr2aww6kzq56jax5ymhjfm3cpgx26vj4c70kb6"))))
+ "1jypk0gdwxqbqxiblww863nzq0kwnc676q68j32sprqd7ilnq02s"))
+ (patches (search-patches "disarchive-cross-compilation.patch"))))
(build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'delete-configure
+ (lambda _
+ (delete-file "configure"))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
+ ("guile" ,guile-3.0) ;for cross-compilation
+ ("guile-gcrypt" ,guile-gcrypt)
("guile-quickcheck" ,guile-quickcheck)))
(inputs
`(("guile" ,guile-3.0)