diff options
Diffstat (limited to 'gnu/packages/backup.scm')
-rw-r--r-- | gnu/packages/backup.scm | 127 |
1 files changed, 114 insertions, 13 deletions
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 444559ea80..85764b073e 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +33,7 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system go) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages acl) @@ -45,6 +47,7 @@ #:use-module (gnu packages ftp) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang) #:use-module (gnu packages gperf) #:use-module (gnu packages guile) #:use-module (gnu packages linux) @@ -472,13 +475,13 @@ detection, and lossless compression.") (define-public borg (package (name "borg") - (version "1.1.5") + (version "1.1.6") (source (origin (method url-fetch) (uri (pypi-uri "borgbackup" version)) (sha256 - (base32 "0gbdnq7ks46diz6y2pf6wpwkb9hy6hp3immi7jg3h7w72b3ycmj3")) + (base32 "0c09j46fi8i7klas0bh82a4whlwnajshk0izkgax6fjxr1sf9lm1")) (modules '((guix build utils))) (snippet '(begin @@ -511,17 +514,6 @@ detection, and lossless compression.") ;; HOME=/homeless-shelter. (setenv "HOME" "/tmp") #t))) - ;; Later versions of msgpack were disallowed to some warnings and lack - ;; of support for Python versions that we don't support anyways. So, - ;; it's okay to to keep using more recents versions of msgpack for - ;; Borg. Also see the note about msgpack in the list of inputs. - ;; https://github.com/borgbackup/borg/issues/3517#issuecomment-357221978 - (add-before 'build 'adjust-msgpack-dependency - (lambda _ - (substitute* "setup.py" - (("msgpack-python>=0.4.6,<0.5.0") - "msgpack-python>=0.4.6")) - #t)) ;; The tests need to be run after Borg is installed. (delete 'check) (add-after 'install 'check @@ -833,3 +825,112 @@ file systems with unattended creation and expiration. A dirvish backup vault is like a time machine for your data. ") (license (license:fsf-free "file://COPYING" "Open Software License 2.0")))) + +(define-public restic ; bundled / vendored dependencies + (package + (name "restic") + (version "0.9.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/restic/restic/releases/download/" + "v" version "/restic-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "15f0rsm2lxk4lmn4773q28g49p68pqyyx0ccp7r556asan73p79m")))) + (build-system go-build-system) + (arguments + `(#:import-path "github.com/restic/restic" + #:unpack-path "github.com/restic" + ;; We don't need to install the source code for end-user applications. + #:install-source? #f + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion (string-append + "src/github.com/restic/restic-" + ,version) + (invoke "go" "run" "build.go")))) + + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (src (string-append "src/github.com/restic/restic-" + ,version))) + (install-file (string-append src "/restic") + (string-append out "/bin")) + #t))) + + (add-after 'install 'install-docs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man "/share/man") + (man-section (string-append man "/man")) + (src (string-append "src/github.com/restic/restic-" + ,version "/doc/man/"))) + ;; Install all the man pages to "out". + (for-each + (lambda (file) + (install-file file + (string-append out man-section + (string-take-right file 1)))) + (find-files src "\\.[1-9]")) + #t))) + + (add-after 'install-docs 'install-shell-completion + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (etc (string-append out "/etc")) + (share (string-append out "/share"))) + (for-each + (lambda (shell) + (let* ((shell-name (symbol->string shell)) + (dir (string-append "etc/completion/" shell-name))) + (mkdir-p dir) + (invoke (string-append bin "/restic") "generate" + (string-append "--" shell-name "-completion") + (string-append dir "/" + (case shell + ((bash) "restic") + ((zsh) "_restic")))))) + '(bash zsh)) + (with-directory-excursion "etc/completion" + (install-file "bash/restic" + (string-append etc "/bash_completion.d")) + (install-file "zsh/_restic" + (string-append share "/zsh/site-functions"))) + #t)))))) + (home-page "https://restic.net/") + (synopsis "Backup program with multiple revisions, encryption and more") + (description "Restic is a program that does backups right and was designed +with the following principles in mind: + +@itemize +@item Easy: Doing backups should be a frictionless process, otherwise you +might be tempted to skip it. Restic should be easy to configure and use, so +that, in the event of a data loss, you can just restore it. Likewise, +restoring data should not be complicated. + +@item Fast: Backing up your data with restic should only be limited by your +network or hard disk bandwidth so that you can backup your files every day. +Nobody does backups if it takes too much time. Restoring backups should only +transfer data that is needed for the files that are to be restored, so that +this process is also fast. + +@item Verifiable: Much more important than backup is restore, so restic +enables you to easily verify that all data can be restored. @item Secure: +Restic uses cryptography to guarantee confidentiality and integrity of your +data. The location the backup data is stored is assumed not to be a trusted +environment (e.g. a shared space where others like system administrators are +able to access your backups). Restic is built to secure your data against +such attackers. + +@item Efficient: With the growth of data, additional snapshots should only +take the storage of the actual increment. Even more, duplicate data should be +de-duplicated before it is actually written to the storage back end to save +precious backup space. +@end itemize") + (license license:bsd-2))) |