gnu: Add btar.
[jackhill/guix/guix.git] / gnu / packages / backup.scm
CommitLineData
d1a5439b
EB
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages backup)
20 #:use-module (guix packages)
21 #:use-module (guix licenses)
22 #:use-module (guix download)
2d762953 23 #:use-module (guix build-system gnu)
d1a5439b
EB
24 #:use-module (guix build-system python)
25 #:use-module (gnu packages)
2d762953
EB
26 #:use-module (gnu packages base)
27 #:use-module (gnu packages compression)
d42e6122 28 #:use-module (gnu packages dejagnu)
2d762953 29 #:use-module (gnu packages glib)
d1a5439b 30 #:use-module (gnu packages gnupg)
2d762953 31 #:use-module (gnu packages mcrypt)
d42e6122
EB
32 #:use-module (gnu packages nettle)
33 #:use-module (gnu packages pcre)
2d762953
EB
34 #:use-module (gnu packages python)
35 #:use-module (gnu packages pkg-config)
d1a5439b 36 #:use-module (gnu packages rsync)
2d762953 37 #:use-module (gnu packages ssh)
d1a5439b
EB
38 #:use-module (srfi srfi-1))
39
40(define-public duplicity
41 (package
42 (name "duplicity")
43 (version "0.6.24")
44 (source
45 (origin
46 (method url-fetch)
47 (uri (string-append "https://code.launchpad.net/duplicity/"
48 (string-join (take (string-split version #\.) 2) ".")
49 "-series/" version "/+download/duplicity-"
50 version ".tar.gz"))
51 (sha256
52 (base32
53 "0l14nrhbgkyjgvh339bbhnm6hrdwrjadphq1jmpi0mcgcdbdfh8x"))))
54 (build-system python-build-system)
55 (native-inputs
56 `(("python2-setuptools" ,python2-setuptools)))
57 (inputs
58 `(("python" ,python-2)
59 ("librsync" ,librsync)
60 ("mock" ,python2-mock) ;for testing
61 ("lockfile" ,python2-lockfile)
62 ("gnupg" ,gnupg-1))) ;gpg executable needed
63 (arguments
64 `(#:python ,python-2 ;setup assumes Python 2
65 #:test-target "test"
66 #:phases (alist-cons-before
67 'check 'patch-tests
68 (lambda _
69 (substitute* "testing/functional/__init__.py"
70 (("/bin/sh") (which "sh"))))
71 %standard-phases)))
72 (home-page "http://duplicity.nongnu.org/index.html")
73 (synopsis "Encrypted backup using rsync algorithm")
74 (description
75 "Duplicity backs up directories by producing encrypted tar-format volumes
76and uploading them to a remote or local file server. Because duplicity uses
77librsync, the incremental archives are space efficient and only record the
78parts of files that have changed since the last backup. Because duplicity
79uses GnuPG to encrypt and/or sign these archives, they will be safe from
80spying and/or modification by the server.")
81 (license gpl2+)))
2d762953
EB
82
83(define-public hdup
84 (package
85 (name "hdup")
86 (version "2.0.14")
87 (source
88 (origin
89 (method url-fetch)
90 ;; Source tarballs are not versioned
91 (uri "http://archive.miek.nl/projects/hdup2/hdup.tar.bz2")
92 (sha256
93 (base32
94 "02bnczg01cyhajmm4rhbnc0ja0dd9ikv9fwv28asxh1rlx9yr0b7"))))
95 (build-system gnu-build-system)
96 (native-inputs `(("pkg-config" ,pkg-config)))
97 (inputs
98 `(("glib" ,glib)
99 ("tar" ,tar)
100 ("lzop" ,lzop)
101 ("mcrypt" ,mcrypt)
102 ("openssh" ,openssh)
103 ("gnupg" ,gnupg-1)))
104 (arguments
105 `(#:configure-flags
106 `(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin"))
107 #:tests? #f))
108 (home-page "http://archive.miek.nl/projects/hdup/index.html")
109 (synopsis "Simple incremental backup tool")
110 (description
111 "Hdup2 is a backup utilty, its aim is to make backup really simple. The
112backup scheduling is done by means of a cron job. It supports an
113include/exclude mechanism, remote backups, encrypted backups and split
114backups (called chunks) to allow easy burning to CD/DVD.")
115 (license gpl2)))
d42e6122
EB
116
117(define-public rdup
118 (package
119 (name "rdup")
120 (version "1.1.14")
121 (source
122 (origin
123 (method url-fetch)
124 (uri (string-append "http://archive.miek.nl/projects/rdup/rdup-"
125 version ".tar.bz2"))
126 (sha256
127 (base32
128 "0aklwd9v7ix0m4ayl762sil685f42cwljzx3jz5skrnjaq32npmj"))))
129 (build-system gnu-build-system)
130 (native-inputs
131 `(("pkg-config" ,pkg-config)
132 ("dejagnu" ,dejagnu)))
133 (inputs
134 `(("glib" ,glib)
135 ("pcre" ,pcre)
136 ("libarchive" ,libarchive)
137 ("nettle" ,nettle)))
138 (arguments
139 `(#:parallel-build? #f ;race conditions
140 #:phases (alist-cons-before
141 'build 'remove-Werror
142 ;; rdup uses a deprecated function from libarchive
143 (lambda _
144 (substitute* "GNUmakefile"
145 (("^(CFLAGS=.*)-Werror" _ front) front)))
146 %standard-phases)))
147 (home-page "http://archive.miek.nl/projects/rdup/index.html")
148 (synopsis "Provide a list of files to backup")
149 (description
150 "Rdup is a utility inspired by rsync and the plan9 way of doing backups.
151Rdup itself does not backup anything, it only print a list of absolute
152filenames to standard output. Auxiliary scripts are needed that act on this
153list and implement the backup strategy.")
154 (license gpl3+)))
22c24621
EB
155
156(define-public btar
157 (package
158 (name "btar")
159 (version "1.1.1")
160 (source
161 (origin
162 (method url-fetch)
163 (uri (string-append "http://vicerveza.homeunix.net/~viric/soft/btar/"
164 "btar-" version ".tar.gz"))
165 (sha256
166 (base32
167 "0miklk4bqblpyzh1bni4x6lqn88fa8fjn15x1k1n8bxkx60nlymd"))))
168 (build-system gnu-build-system)
169 (inputs
170 `(("librsync" ,librsync)))
171 (arguments
172 `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
173 "CC=gcc")
174 #:tests? #f ;test input not distributed
175 #:phases
176 (alist-delete
177 'configure ;no configure phase
178 %standard-phases)))
179 (home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki")
180 (synopsis "Tar-compatible archiver")
181 (description
182 "Btar is a tar-compatible archiver which allows arbitrary compression and
183ciphering, redundancy, differential backup, indexed extraction, multicore
184compression, input and output serialisation, and tolerance to partial archive
185errors.")
186 (license gpl3+)))