debian/0000775000000000000000000000000012321250315007162 5ustar debian/changelog0000664000000000000000000010161512321250314011037 0ustar duplicity (0.6.23-1ubuntu4) trusty; urgency=medium * debian/patches/skip-flaky-test.patch: - One of the tests is failing on ppc64el because the test relies on guessing how many volumes duplicity will split a bunch of random data into. But that's an inherently sketchy guess to make. Just disable for now until we can work with upstream on a better fix. -- Michael Terry Wed, 09 Apr 2014 09:51:13 -0400 duplicity (0.6.23-1ubuntu3) trusty; urgency=medium * debian/patches/print-encode.patch: - The print Python command has trouble with unicode, so for the few user-visible messages where we directly print to console, instead send the string through duplicity's log framework which can handle unicode gracefully. Stops frequent crashes in non-English locales. LP: #1286845 -- Michael Terry Tue, 08 Apr 2014 15:15:32 -0400 duplicity (0.6.23-1ubuntu2) trusty; urgency=medium * debian/patches/getpass-encode.patch: - Always pass getpass a bytes string, preventing a crash when prompting the user for a passphrase in non-English locales. LP: #1276327 -- Michael Terry Sat, 22 Feb 2014 10:39:21 -0500 duplicity (0.6.23-1ubuntu1) trusty; urgency=low * Merge from Debian unstable. Remaining changes: - Enable tests during build - Add simple dep8 test that does a backup/restore cycle - Drop Recommends for various backends to Suggests - debian/patches/{01-reverify,02-unicode}: Disabled, upstream fixed the bugs these patches work around * debian/control: - Add Breaks on older versions of deja-dup due to new lockfile support -- Michael Terry Wed, 19 Feb 2014 12:02:20 -0500 duplicity (0.6.23-1) unstable; urgency=low * New upstream release (closes: #737086, #541788) * improved u1 url documentation (closes: #697426) * fixed packaging for ssh+pexpect storage backend (closes: #688642) * lifted standards version -- Alexander Zangerl Sat, 01 Feb 2014 13:44:16 +1000 duplicity (0.6.23-0ubuntu1) trusty; urgency=medium * New upstream release * Drop all patches, all applied upstream -- Michael Terry Thu, 30 Jan 2014 17:16:04 -0500 duplicity (0.6.22-2) unstable; urgency=low * updated manpage to improve description of option --extra-clean (see #724594). * added python-swiftclient to suggests for the new openstack swift backend (closes: #732221) * applied upstream patch for LP: #1218425 to fix backups to S3 (closes: #732347). -- Alexander Zangerl Fri, 20 Dec 2013 17:35:29 +1000 duplicity (0.6.22-1ubuntu3) trusty; urgency=low * debian/patches/04-dont-skip-first-chunk-on-restart.patch: - When restarting a backup, if the file we were in the middle of backing up is now deleted, don't skip the first 65k chunk of the next file. Patch backported from upstream trunk. LP: #1252484 -- Michael Terry Mon, 18 Nov 2013 16:51:52 -0500 duplicity (0.6.22-1ubuntu2) trusty; urgency=low * debian/control: Drop Recommends to Suggests again. We don't need to pick favorites among the backends or clutter the image. -- Michael Terry Wed, 23 Oct 2013 09:35:04 -0400 duplicity (0.6.22-1ubuntu1) trusty; urgency=low * Merge from Debian unstable. Remaining changes: - Enable tests during build - Add simple dep8 test that does a backup/restore cycle - debian/patches/03-ignoremissing: Backport fix from trunk to correctly ignore missing files in some cases. - debian/patches/01-reverify: Disabled, upstream fixed the bug that this patch is working around. -- Michael Terry Tue, 22 Oct 2013 16:13:18 -0400 duplicity (0.6.22-1) unstable; urgency=low * New upstream release * changed to 3.0 quilt source format (closes: #671636) * lilfted debhelper compat level -- Alexander Zangerl Mon, 16 Sep 2013 11:49:18 +1000 duplicity (0.6.21-3) unstable; urgency=low * backported fixes for LP: #1115715 and #1156746, which caused failures of the ssh/sftp backend (closes: #715803) -- Alexander Zangerl Thu, 18 Jul 2013 11:44:58 +1000 duplicity (0.6.21-2) unstable; urgency=low * backported fix for LP: #1161599 which caused almost certain failure of the ubuntu1 backend -- Alexander Zangerl Fri, 31 May 2013 11:21:44 +1000 duplicity (0.6.21-1) unstable; urgency=low * New upstream release (closes: #611465, #677217) * updated dependencies -- Alexander Zangerl Fri, 24 May 2013 11:22:46 +1000 duplicity (0.6.21-0ubuntu4) saucy; urgency=low * debian/patches/02ignoremissing.dpatch: - Fix patch to not try to handle non-OSError exceptions -- Michael Terry Thu, 12 Sep 2013 11:16:32 -0400 duplicity (0.6.21-0ubuntu3) saucy; urgency=low * debian/patches/02ignoremissing.dpatch: - Fix a utility function that tried to ignore missing files, but didn't. Fixes a possible crasher. LP: #1216921 Patch by Matthias Witte. -- Michael Terry Thu, 12 Sep 2013 10:55:24 -0400 duplicity (0.6.21-0ubuntu2) saucy; urgency=low * debian/patches/01u1backend.dpatch: - Backport some fixes for avoiding "400" errors when backing up to Ubuntu One. Patch by Christopher Townsend. LP: #1161599 -- Michael Terry Wed, 15 May 2013 16:11:24 -0400 duplicity (0.6.21-0ubuntu1) raring; urgency=low * New upstream release * debian/patches/02cachedesync.dpatch, debian/patches/03u1backend.dpatch, debian/patches/07caching.dpatch, debian/patches/08volcorruption.dpatch: - Dropped, applied upstream -- Michael Terry Wed, 23 Jan 2013 14:32:15 -0500 duplicity (0.6.20-3) unstable; urgency=low * implement workaround for unicode issues with the logger; duplicity now uses POSIX regardless of the system locale (closes: #682837) -- Alexander Zangerl Tue, 05 Mar 2013 12:44:24 +1000 duplicity (0.6.20-2) unstable; urgency=low * fix unicode issues when logging: str.decode doesn't work under certain locales (eg. en_US.iso88591) if the input is already unicode and unfortunately errors=ignore is ignored... (closes: #682837) -- Alexander Zangerl Tue, 15 Jan 2013 16:58:30 +1000 duplicity (0.6.20-1) unstable; urgency=low * New upstream release (closes: #696177, #659004) dependencies adjusted, removed GnuPGInterface -- Alexander Zangerl Sun, 30 Dec 2012 16:59:18 +1000 duplicity (0.6.20-0ubuntu5) raring; urgency=low * debian/patches/00list: - Guh, actually enable 08volcorruption.dpatch -- Michael Terry Thu, 10 Jan 2013 20:23:01 -0500 duplicity (0.6.20-0ubuntu4) raring; urgency=low * debian/patches/08volcorruption.dpatch: - Fix some data-corruption issues when resuming an interrupted backup (LP: #1091269) -- Michael Terry Mon, 07 Jan 2013 10:28:41 -0500 duplicity (0.6.20-0ubuntu3) raring; urgency=low * debian/patches/07caching.dpatch: - Backport caching work done by Steve Atwell, on behalf of Chris J Arges (LP: #1013446) -- Iain Lane Tue, 11 Dec 2012 14:52:15 +0000 duplicity (0.6.20-0ubuntu2) raring; urgency=low * debian/patches/03u1backend.dpatch: - Update with a fix for a UnicodeDecodeError crash (LP: #1080423) -- Michael Terry Wed, 05 Dec 2012 16:16:44 -0500 duplicity (0.6.20-0ubuntu1) raring; urgency=low * New upstream release * debian/control: - Update some suggests * debian/patches/03u1backend.dpatch: - Backport some fixes from trunk for the new U1 backend * debian/patches/03forcecleanup.dpatch, debian/patches/06nodeletebasedir.dpatch: - Dropped, included upstream * debian/patches/05upstreamgpgintf.dpatch: - Dropped, upstream really wants us to use their gpg wrapper -- Michael Terry Tue, 30 Oct 2012 15:35:12 +0100 duplicity (0.6.19-0ubuntu2) quantal; urgency=low * debian/patches/06nodeletebasedir.dpatch: - Backport patch to fix possible error during restore due to duplicate entries in backup metadata from resumed backups. LP: #929067 -- Michael Terry Thu, 13 Sep 2012 12:43:50 -0400 duplicity (0.6.19-0ubuntu1) quantal; urgency=low * New upstream release (LP: #1014856) * debian/patches/06lazywarnings.dpatch: - Dropped, included upstream -- Michael Terry Thu, 21 Jun 2012 13:06:46 -0400 duplicity (0.6.18-6) unstable; urgency=low * fixed WebDAV backend: MKCOL must be iterated for nested directories (closes: #693521) -- Alexander Zangerl Mon, 19 Nov 2012 13:02:02 +1000 duplicity (0.6.18-5) unstable; urgency=low * Ubuntu One backend: fixed a small programming error, added 30s delay for retries. -- Alexander Zangerl Fri, 26 Oct 2012 15:26:26 +1000 duplicity (0.6.18-4) unstable; urgency=low * include new standalone/REST backend for Ubuntu One * updated recommends to include oauth and httplib2, which are required if the Ubuntu One backend is used. -- Alexander Zangerl Sat, 13 Oct 2012 15:54:50 +1000 duplicity (0.6.18-3) unstable; urgency=low * repaired duplicity's symlink handling for --exclude-if-present (closes: #685352) -- Alexander Zangerl Thu, 23 Aug 2012 11:17:57 +1000 duplicity (0.6.18-2) unstable; urgency=low * improved key-id documentation for --sign-key and --encrypt-key (closes: #671810). -- Alexander Zangerl Mon, 07 May 2012 16:16:43 +1000 duplicity (0.6.18-1) unstable; urgency=low * New upstream release (closes: #659532) * fixed restart failure: disabled validate_encryption_settings which is incompatible with public key encrypt-only mode (closes: #659009) -- Alexander Zangerl Sat, 10 Mar 2012 13:28:09 +1000 duplicity (0.6.18-0ubuntu3) precise; urgency=low * debian/patches/06lazywarnings.dpatch: - Backport patch to add some more machine-readable warning codes for when duplicity can't restore a particular file. This lets apps like deja-dup present the user with a list of files with problems. -- Michael Terry Thu, 22 Mar 2012 09:24:58 -0400 duplicity (0.6.18-0ubuntu2) precise; urgency=low * debian/control: - Drop python-paramiko to a Suggests to match the ssh Suggests and to keep it off the CD, for space reasons. It isn't needed for deja-dup to use ssh anyway, since deja-dup uses GIO for that. So no loss of functionality in the desktop. -- Michael Terry Tue, 06 Mar 2012 10:49:42 -0500 duplicity (0.6.18-0ubuntu1) precise; urgency=low * New upstream bug-fix release * debian/patches/01pexpect.dpatch: - Dropped, upstream switched to paramiko instead * debian/control: - Switch depend on python-pexpect to python-paramiko -- Michael Terry Mon, 05 Mar 2012 11:42:55 -0500 duplicity (0.6.17-4) unstable; urgency=low * activated paramiko's logging for the ssh backend and aligned logging with duplicity's verbosity levels -- Alexander Zangerl Tue, 14 Feb 2012 15:28:40 +1000 duplicity (0.6.17-3) unstable; urgency=low * introduced better error reporting for catching paramiko's pickiness wrt. known_hosts format issues (closes: #656382) -- Alexander Zangerl Fri, 03 Feb 2012 13:51:17 +1000 duplicity (0.6.17-2) unstable; urgency=low * applied patch for excessive memory consumption of tarfile (closes: #657187) * clarified description of --ssh-options in manpage (closes: #657876) -- Alexander Zangerl Thu, 02 Feb 2012 11:52:56 +1000 duplicity (0.6.17-1) unstable; urgency=low * New upstream release * replaced sftp/scp-backend with new version that uses python-paramiko (closes: #646924, #596857, #605624) -- Alexander Zangerl Sun, 01 Jan 2012 15:02:59 +1000 duplicity (0.6.17-0ubuntu1) precise; urgency=low * New upstream release * debian/patches/06_use_passphrase.dpatch, debian/patches/07_large_rackspace_list.dpatch, debian/patches/08_check_volumes.dpatch: - Dropped, applied upstream * debian/rules: - Run new upstream test suite during build * debian/control: - Add rdiff as a build-dep to run above test suite * debian/patches/06testfixes.dpatch: - Fix a few tests to not fail erroneously * debian/patches/07fixincresume.dpatch: - Fix a bug with resuming an incremental backup that would result in a bogus error. Also patches in a test for it. * debian/tests/full-cycle-local: - New DEP-8 test script that backs up locally, restores, and checks files * debian/tests/full-cycle-u1: - New DEP-8 test script that does the same as above, but to Ubuntu One * debian/tests/control: - Start of DEP-8 test suite. Only enable above full-cycle-local test for automatic execution. The other is for manual testing right now. -- Michael Terry Tue, 06 Dec 2011 14:15:01 -0500 duplicity (0.6.15-4) unstable; urgency=low * applied patch for timezone confusion (closes: #647578) -- Alexander Zangerl Sun, 06 Nov 2011 10:44:56 +1000 duplicity (0.6.15-3) unstable; urgency=low * applied upstream patch to provide fallback for SIGN_PASSPHRASE as per manual (closes: #644208) -- Alexander Zangerl Wed, 05 Oct 2011 10:14:43 +1000 duplicity (0.6.15-2) unstable; urgency=high * rebuilt against sid, not squeeze. -- Alexander Zangerl Sun, 02 Oct 2011 11:03:40 +1000 duplicity (0.6.15-1) unstable; urgency=high * New upstream release * repaired patch for #572792 which had been misapplied/broken in 0.6.14 (closes: #643846) -- Alexander Zangerl Sat, 01 Oct 2011 15:26:27 +1000 duplicity (0.6.15-0ubuntu2) oneiric; urgency=low * Backport some upstream fixes * debian/patches/06_use_passhprase.dpatch: - Don't prompt for passphrase if PASSPHRASE is set (LP: #836467) * debian/patches/07_large_rackspace_list.dpatch: - Support listing more than 10,000 files from Rackspace servers (LP: #832149) * debian/patches/08_check_volumes.dpatch: - Attempt to prevent a data corruption bug that can't be reproduced currently by detecting it up front and stopping the backup. -- Michael Terry Thu, 08 Sep 2011 09:10:57 -0400 duplicity (0.6.15-0ubuntu1) oneiric; urgency=low * New upstream bug-fix release * debian/watch: - Update to look at launchpad.net * debian/patches/06u1ignores404.dpatch, debian/patches/07ignoreENOTCONN.dpatch: - Dropped, applied upstream -- Michael Terry Fri, 19 Aug 2011 15:30:23 -0400 duplicity (0.6.14-1) unstable; urgency=low * New upstream release (closes: #635037, #601584) -- Alexander Zangerl Mon, 25 Jul 2011 18:38:04 +1000 duplicity (0.6.14-0ubuntu3) oneiric; urgency=low * debian/patches/07ignoreENOTCONN.dpatch: - Patch to ignore ENOTCONN errors which can happen when gvfs-fuse closes without cleaning up. LP: #794576 * debian/patches/00list: - Actually apply 06u1ignores404.dpatch from last upload as well as the above 07 patch -- Michael Terry Thu, 07 Jul 2011 16:09:51 -0400 duplicity (0.6.14-0ubuntu2) oneiric; urgency=low * debian/patches/06u1ignores404.dpatch: - Ignore 404 "file not found" errors when trying to delete files on Ubuntu One. Backported from upstream trunk. -- Michael Terry Wed, 22 Jun 2011 15:17:39 -0400 duplicity (0.6.14-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/01collstatus.dpatch, debian/patches/06moregrace.dpatch, debian/patches/07ubuntuone.dpatch, debian/patches/08levelname.dpatch: - Dropped, included upstream -- Michael Terry Sat, 18 Jun 2011 21:36:07 -0400 duplicity (0.6.13-2ubuntu1) oneiric; urgency=low * debian/patches/07ubuntuone.dpatch: - Backported from trunk; adds Ubuntu One backend * debian/patches/08levelname.dpatch: - Fixes logging issues introduced by above patch -- Michael Terry Mon, 13 Jun 2011 11:53:19 -0400 duplicity (0.6.13-2) unstable; urgency=low * applied fix to allow collectionstatus op without access to key (closes: #625645) -- Alexander Zangerl Sat, 21 May 2011 17:46:28 +1000 duplicity (0.6.13-1) unstable; urgency=low * New upstream release * band-aid for #601584: now the error report is at least more verbose -- Alexander Zangerl Thu, 21 Apr 2011 18:28:56 +1000 duplicity (0.6.12-1) unstable; urgency=low * New upstream release (closes: #615668, #579966) * switched to dh_python2 (closes: #616797) * now uses mainstream GnuPGInterface module again -- Alexander Zangerl Sun, 13 Mar 2011 00:03:18 +1000 duplicity (0.6.09-5) unstable; urgency=low * changed homepage field (closes: #599060) * added patch for problems with rsync 3.0.7++ (closes: #595562) -- Alexander Zangerl Sat, 20 Nov 2010 14:37:54 +1000 duplicity (0.6.09-4) unstable; urgency=low * and again i uploaded the Lenny-built package..sigh. (closes: #594562) * lifted standards version, updated suggests a bit -- Alexander Zangerl Tue, 07 Sep 2010 16:45:19 +1000 duplicity (0.6.09-3) unstable; urgency=low * add patch to prime option parser with proper arguments (closes: #595567) -- Alexander Zangerl Mon, 06 Sep 2010 12:57:46 +1000 duplicity (0.6.09-2) unstable; urgency=high * added copyright text for the local, modified, version of GnuPGInterface (closes: #594532) * upload version built against python 2.6, making the package installable in Squeeze (closes: #594562) -- Alexander Zangerl Sat, 28 Aug 2010 14:37:44 +1000 duplicity (0.6.09-1) unstable; urgency=low * New upstream release (closes: #581260, #572102, #531786) -- Alexander Zangerl Wed, 25 Aug 2010 23:32:30 +1000 duplicity (0.6.08b-1) unstable; urgency=low * New upstream release * backed out patch for upstream bug#497243 from 06-3 and -4, as that fix was only cosmetic. This version now enforces extra-clean cleanups on any remove operation, which both fixes the cache desync issue as well as the accumulation of old cruft in remote archive and local cache. NEWS.Debian and manpage have been updated to mention that behaviour. (closes: #572792) -- Alexander Zangerl Mon, 15 Mar 2010 20:52:56 +1000 duplicity (0.6.06-5) unstable; urgency=low * updated watch file (closes: #573890) -- Alexander Zangerl Mon, 15 Mar 2010 19:48:37 +1000 duplicity (0.6.06-4) unstable; urgency=low * updated fix for upstream bug#497243 to fix one remaining case where cache desynchronization occurs. -- Alexander Zangerl Sun, 28 Feb 2010 11:10:07 +1000 duplicity (0.6.06-3) unstable; urgency=low * applied fix for upstream bug#497243: cache desynchronization. -- Alexander Zangerl Tue, 26 Jan 2010 17:12:18 +1000 duplicity (0.6.06-2) unstable; urgency=high * fixed ssh backend failure (tried to import local pexpect module) (closes: #556095) -- Alexander Zangerl Mon, 16 Nov 2009 04:48:45 +1000 duplicity (0.6.06-1) unstable; urgency=low * New upstream release (closes: #539903, #420858) * does no longer depend on python-gnupginterface: upstream provides a modified version which is claimed to be incompatible * does not install a local version of python-pexpect anymore (closes: #555359) -- Alexander Zangerl Fri, 13 Nov 2009 07:30:49 +1000 duplicity (0.6.05-2) unstable; urgency=low * adjusted rules to cater for future python2.6 install setup (closes: #547825) -- Alexander Zangerl Fri, 25 Sep 2009 11:05:38 +1000 duplicity (0.6.05-1) unstable; urgency=low * New upstream release * lifted standards version -- Alexander Zangerl Sun, 20 Sep 2009 10:46:40 +1000 duplicity (0.6.04-1) unstable; urgency=low * New upstream release (closes: #536361, #537260, #42858, #399371, #388180, #386749 ) * new project homepage * added notes regarding changed archive-dir behaviour -- Alexander Zangerl Wed, 12 Aug 2009 12:34:01 +1000 duplicity (0.5.16-1) unstable; urgency=low * New upstream release (closes: #524786) * removed last remaining debian-local patch -- Alexander Zangerl Thu, 23 Apr 2009 14:51:28 +1000 duplicity (0.5.11-2) unstable; urgency=low * changed the setup to temporarily include upstream's repaired copy of GnuPGInterface.py: because of #509415 in python-gnupginterface duplicity currently does not work with public key encryption, no signing and archive dirs. -- Alexander Zangerl Mon, 16 Mar 2009 15:57:01 +1000 duplicity (0.5.11-1) unstable; urgency=low * New upstream release (closes: #519576) -- Alexander Zangerl Sat, 14 Mar 2009 09:14:57 +1000 duplicity (0.5.06-2) unstable; urgency=low * applied most recent upstream fixes -- Alexander Zangerl Sat, 31 Jan 2009 14:31:17 +1000 duplicity (0.5.06-1) unstable; urgency=low * New upstream release * built against sid, not etch (closes: #513446) -- Alexander Zangerl Fri, 30 Jan 2009 11:32:32 +1000 duplicity (0.5.02-2) unstable; urgency=low * lifted standards version * added homepage to control (closes: #512798) -- Alexander Zangerl Wed, 28 Jan 2009 11:59:57 +1000 duplicity (0.5.02-1) unstable; urgency=low * New upstream release (closes: #502207) -- Alexander Zangerl Wed, 15 Oct 2008 08:38:15 +1000 duplicity (0.4.12-2) unstable; urgency=low * applied upstream patch to repair --no-encryption option (which wrongly requested a passphrase) (closes: #497071) -- Alexander Zangerl Sun, 31 Aug 2008 12:24:40 +1000 duplicity (0.4.12-1) unstable; urgency=low * New upstream release -- Alexander Zangerl Thu, 21 Aug 2008 10:49:04 +1000 duplicity (0.4.11-2) unstable; urgency=high * rebuilt for testing's 2.5 python (closes: #480568) -- Alexander Zangerl Sun, 11 May 2008 11:10:01 +1000 duplicity (0.4.11-1) unstable; urgency=low * New upstream release * make duplicity accept s3 access credentials from boto config files and not just the environment (closes: #480417) -- Alexander Zangerl Sat, 10 May 2008 11:17:39 +1000 duplicity (0.4.10-2) unstable; urgency=low * applied patch to work around newer python-boto behaviour which can make existing S3 backups inaccessible. (closes: #475890) -- Alexander Zangerl Tue, 15 Apr 2008 12:46:32 +1000 duplicity (0.4.10-1) unstable; urgency=low * New upstream release -- Alexander Zangerl Mon, 31 Mar 2008 22:19:16 +1000 duplicity (0.4.8-1) unstable; urgency=high * New upstream release * fixed backup data corruption for rsync backend -- Alexander Zangerl Fri, 21 Dec 2007 17:16:42 +1000 duplicity (0.4.7-1) unstable; urgency=low * New upstream release (closes: #452700) -- Alexander Zangerl Sat, 8 Dec 2007 10:29:26 +1000 duplicity (0.4.3-6) unstable; urgency=low * fixed some manpage typos (closes: #450881) -- Alexander Zangerl Thu, 15 Nov 2007 12:21:48 +1000 duplicity (0.4.3-5) unstable; urgency=low * minor manpage improvements in response to #447538 -- Alexander Zangerl Wed, 24 Oct 2007 12:22:14 +1000 duplicity (0.4.3-4) unstable; urgency=low * applied Christoph Martin's patch to the ftp backend to make duplicity cooperate with etch's ncftp (closes: #444972) -- Alexander Zangerl Sat, 6 Oct 2007 20:02:43 +1000 duplicity (0.4.3-3) unstable; urgency=medium * reworked the "no passphrase" patch to properly cover symmetric encryption, where a passphrase is always needed (closes: #443803) -- Alexander Zangerl Tue, 25 Sep 2007 12:14:26 +1000 duplicity (0.4.3-2) unstable; urgency=low * now suggests ncftp (closes: #442834) and mentions that in NEWS.Debian i have decided that Recommends: is too strong here, as ftp is a lousy protocol which should be avoided as much as possible. * applied upstream fix for leaking ftp passphrases via the commandline (closes: #442840). the fix works only with ncftp version 3.2.1 and newer, which means etch is out. * applied upstream patch for upstream-#21123, which fixes another ftp backend problem. * finally fixed the superfluous passphrase dialogs * tidied build process for easier integration into ubuntu, removing some unnecessary python version dependencies * applied upstream patch for upstream-#6211, restoring strict host key checks for the ssh backend. -- Alexander Zangerl Wed, 19 Sep 2007 22:36:04 +1000 duplicity (0.4.3-1) unstable; urgency=low * New upstream release (closes: #439057) this release closes a whole bunch of old and recent debian bugs bzip2 is now optional (closes: #437694) the manpage is mostly ok now (closes: #345172) passphrase handling was overhauled (closes: #370198) sockets are now cleanly ignored (closes: #246984) commands are retried for temporary problems (closes: #346306) * new S3 backend (closes: #384490) this requires python-boto, which is now listed as suggested * updated dependencies with python-pexpect * unattended encrypted backups with archive dir work (closes: #369971, #404345) * patch set reworked * added local fix for offending/garbage files prohibiting further actions (closes: #228388) * added local fix for better tempfile naming -- Alexander Zangerl Sat, 8 Sep 2007 20:09:26 +1000 duplicity (0.4.2-16) unstable; urgency=low * added example backup script (closes: #408749) * re-added ftp-timeout-patch, which was lost somewhere around 0.4.2-6 and added pending ftp-mkdir-patch (closes: #413335) -- Alexander Zangerl Tue, 19 Jun 2007 12:38:43 +1000 duplicity (0.4.2-15) unstable; urgency=low * added --help option and usage message (closes: #345165) -- Alexander Zangerl Tue, 19 Jun 2007 12:09:21 +1000 duplicity (0.4.2-14) unstable; urgency=high * fixed bad patch sequence that broke sftp support (closes: #426819) -- Alexander Zangerl Fri, 1 Jun 2007 00:19:32 +1000 duplicity (0.4.2-13) unstable; urgency=low * added a --volsize option to allow user-specified volume chunks instead of always splitting at 5Mb. -- Alexander Zangerl Thu, 24 May 2007 22:48:52 +1000 duplicity (0.4.2-12) unstable; urgency=low * reworked the patch set * added patch for archive-dir and incrementals (closes: #370206) * added patch for encrypted unattended backups with archive-dir (closes: #369971) -- Alexander Zangerl Tue, 10 Apr 2007 14:28:13 +1000 duplicity (0.4.2-11) unstable; urgency=low * I'm adopting duplicity. Thanks to Martin Wuertele for his past work on duplicity! (closes: #418159) * finetuned debhelper dependency -- Alexander Zangerl Sun, 8 Apr 2007 17:40:30 +1000 duplicity (0.4.2-10.1) unstable; urgency=medium * Switch back to python 2.4, as python-central can apparently no longer cope with 2.3, and 2.4 seems to work ok now; patch from Joey Hess. (Closes: #396158) -- Steinar H. Gunderson Sat, 11 Nov 2006 13:32:07 +0100 duplicity (0.4.2-10) unstable; urgency=low * fix build target (Closes: #386933) -- Martin Wuertele Sat, 16 Sep 2006 10:22:28 +0200 duplicity (0.4.2-9) unstable; urgency=low * switched to python-central * removed modules patch (no more needed) -- Martin Wuertele Sun, 10 Sep 2006 14:29:07 +0200 duplicity (0.4.2-8) unstable; urgency=high * depend on python2.3 fixing restore (Closes: #386607) -- Martin Wuertele Sat, 9 Sep 2006 11:10:48 +0200 duplicity (0.4.2-7.1) unstable; urgency=high * NMU * Don't call dh_pysupport with -n; we need those generated manintainer scripts to, well, work. Closes: #384489, #384826 -- Joey Hess Fri, 8 Sep 2006 01:41:52 -0400 duplicity (0.4.2-7) unstable; urgency=low * Fix arch so _librsync.so gets compiled (Closes: #385989) -- Martin Wuertele Mon, 4 Sep 2006 22:25:09 +0200 duplicity (0.4.2-6) unstable; urgency=low * switch to dpatch for patch management * fix private module search path and make sure postint/postrm work (Closes: #384489) * updated copyright -- Martin Wuertele Sat, 26 Aug 2006 23:25:57 +0200 duplicity (0.4.2-5) unstable; urgency=low * removed patches from debian-revision * added README.Debian describing applied patches * fix targets (Closes: #384570) -- Martin Wuertele Fri, 25 Aug 2006 17:39:09 +0200 duplicity (0.4.2-4+sftp+compression) unstable; urgency=low * temporary disable amazons3 patch * don't pass /usr/share/python-support to dh_pysupport to fix searchpath (Closes: #384489) -- Martin Wuertele Thu, 24 Aug 2006 19:55:40 +0200 duplicity (0.4.2-3+sftp+amazons3+compression) unstable; urgency=low * remove old byte compiled stuff in preinst (Closes: #384142) -- Martin Wuertele Tue, 22 Aug 2006 22:26:46 +0200 duplicity (0.4.2-2+sftp+amazons3+compression.2) unstable; urgency=low * Non-maintainer upload. * Update package to the last python policy (Closes: #380784). -- Pierre Habouzit Sat, 12 Aug 2006 23:20:21 +0200 duplicity (0.4.2-2+sftp+amazons3+compression.1) unstable; urgency=low * NMU * Fix echo -e bashism. Closes: #375543 -- Joey Hess Wed, 5 Jul 2006 16:09:56 -0400 duplicity (0.4.2-2+sftp+amazons3+compression) unstable; urgency=low * changed build-depends from python2.3-dev to python-dev >= 2.3 (Closes: #367484) -- Martin Wuertele Thu, 18 May 2006 13:35:15 -0500 duplicity (0.4.2-1+sftp+amazons3+compression) unstable; urgency=low * new upstream release (Closes: #358519) * fixes some scp/sftp problems * understands ftp 450 (Closes: #238677) * --remove-older-than makes sure duplicity deletes older signatures * --remove-older-than now cannot delete the active backup chain (Closes: #228386) * added sftp patch by intrigeri * added amazon s3 patch by Brian Sutherland * added compression patch by Mathias Wagner -- Martin Wuertele Mon, 15 May 2006 13:44:05 -0500 duplicity (0.4.1-8) unstable; urgency=high * added patch to fix ftp timeout exception when backing up huge files with small changes (patch by Stefan Schimanski ) -- Martin Wuertele Mon, 6 Sep 2004 18:57:42 +0200 duplicity (0.4.1-7) unstable; urgency=low * fixed linebreak in duplicity.1 (Thanks to Uli Martens -- Martin Wuertele Fri, 3 Sep 2004 16:36:45 +0200 duplicity (0.4.1-6) unstable; urgency=low * fixed permissions for tarfile.py * converted changelog to UTF-8 * fixed python dependency to 2.3 in tarfile.py -- Martin Wuertele Sat, 1 May 2004 22:27:22 +0200 duplicity (0.4.1-5) unstable; urgency=low * Depend on python-gnupginterface instead of providing GnuPGInterface.py (Closes: #230048) -- Martin Wuertele Fri, 30 Jan 2004 18:13:05 +0100 duplicity (0.4.1-4) unstable; urgency=low * removed byte compiled code and added postinst to do so (Closes: #221399) -- Martin Wuertele Thu, 20 Nov 2003 19:49:57 +0100 duplicity (0.4.1-3) unstable; urgency=low * removed CHANGELOG.gz from package (Closes: #219784) -- Martin Wuertele Sun, 9 Nov 2003 19:51:53 +0100 duplicity (0.4.1-2) unstable; urgency=low * use librsync.h and depend on librsync-dev >= 0.9.6 since prior versions provide rsync.h -- Martin Wuertele Sun, 31 Aug 2003 17:19:58 +0200 duplicity (0.4.1-1) unstable; urgency=low * new upstream release -- Martin Würtele Mon, 11 Aug 2003 21:09:56 +0200 duplicity (0.4.0-4) unstable; urgency=low * fixed auto build problem (Closes: #204720) -- Martin Würtele Sun, 10 Aug 2003 14:03:20 +0200 duplicity (0.4.0-3) unstable; urgency=low * recompiled witch python 2.3 -- Martin Würtele Sat, 9 Aug 2003 09:17:33 +0200 duplicity (0.4.0-2) unstable; urgency=low * applied LongLink patch from cvs * added tarfile license to copyright -- Martin Würtele Fri, 8 Aug 2003 16:06:27 +0200 duplicity (0.4.0-1) unstable; urgency=low * Initial Release. (Closes: #188713) -- Martin Wuertele Sat, 12 Apr 2003 17:06:27 +0200 debian/compat0000664000000000000000000000000212273216220010363 0ustar 8 debian/tests/0000775000000000000000000000000012273216221010330 5ustar debian/tests/full-cycle-local0000664000000000000000000000054712215550616013415 0ustar #!/bin/sh set -e if [ -z "$TMPDIR" ]; then TMPDIR=/tmp/adt rm -rf $TMPDIR mkdir -p $TMPDIR fi export XDG_CACHE_HOME=$TMPDIR/cache export PASSPHRASE=test cp -r /bin $TMPDIR/source duplicity $TMPDIR/source file://$TMPDIR/backup rm -r $XDG_CACHE_HOME duplicity file://$TMPDIR/backup $TMPDIR/restore diff -p $TMPDIR/source $TMPDIR/restore echo "PASSED" debian/tests/full-cycle-u10000664000000000000000000000056212231565556012654 0ustar #!/bin/sh set -e if [ -z "$TMPDIR" ]; then TMPDIR=/tmp/adt rm -rf $TMPDIR mkdir -p $TMPDIR fi export XDG_CACHE_HOME=$TMPDIR/cache export PASSPHRASE=test cp -r /bin $TMPDIR/source duplicity full $TMPDIR/source u1+http://duplicity-test rm -r $XDG_CACHE_HOME duplicity u1+http://duplicity-test $TMPDIR/restore diff -p $TMPDIR/source $TMPDIR/restore echo "PASSED" debian/tests/control0000664000000000000000000000003012215550616011731 0ustar Tests: full-cycle-local debian/duplicity.docs0000664000000000000000000000003712273216220012045 0ustar debian/NEWS.Debian README-LOG debian/preinst0000664000000000000000000000023312273216220010572 0ustar #!/bin/sh -e # fix my previous errors rm -rf /usr/lib/python2.2/site-packages/duplicity/ rm -rf /usr/lib/python2.3/site-packages/duplicity/ #DEBHELPER# debian/examples/0000775000000000000000000000000012273216221011004 5ustar debian/examples/system-backup0000664000000000000000000001055512273216220013523 0ustar #!/bin/bash # # Copyright (C) 2007 Francois Marier # # This backup script is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Email-Reminder; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # # Usage: # backup automatic backup # backup --full force a full backup # backup --list-current-files list of files currently backed up # backup --file-to-restore directory/foo restore the given file as "./restored_foo" # # Note that the following files should be in the same directory as this script: # # include Files and directories to include in the backup (one per line) # exclude From the directories previously mentioned, which ones to omit # id_rsa Private ssh key for the backup host # id_rsa.pub Public ssh key for the backup host (copied there as .ssh/authorized_keys) # known_hosts Contains the fingerprints for the backup host # -----------START OF USER CONFIGURATION------------ # HINT: Generate a good passphrase using "pwgen -s 16" GPG_PASSWORD="" # The directory where this script and all the configuration files are located BACKUP_HOME="/home/my_username/.backup" # The name of the database to backup WIKIDB="wikidb" # The MySQL root password MYSQL_PASSWORD="mysql_root_password" # To limit the SCP transfers to a certain number of bytes per second SCP_LIMIT="520" # How many days to keep the old backups OLDAGE="9D" # Which host (using ssh) to copy the backup to SSH_HOST="username@some_host.somewhere.net" # -----------END OF USER CONFIGURATION------------ # Internal variables SSH_IDENTITY="IdentityFile=$BACKUP_HOME/id_rsa" SSH_HOSTKEY="UserKnownHostsFile=$BACKUP_HOME/known_hosts" SSH="ssh -o $SSH_IDENTITY -o $SSH_HOSTKEY" SCP="scp -q -l $SCP_LIMIT -o $SSH_IDENTITY -o $SSH_HOSTKEY" SFTP="sftp -o $SSH_IDENTITY -o $SSH_HOSTKEY" INCLUDE_FILE="$BACKUP_HOME/include" EXCLUDE_FILE="$BACKUP_HOME/exclude" DUMP_FILE="$BACKUP_HOME/$WIKIDB-dump.sql" PKG_FILE="$BACKUP_HOME/dpkg-selections" # Create the backup directory in case it doesn't exist $SSH $SSH_HOST mkdir -p $HOSTNAME # If the list of files has been requested, only do that if [ "$1" = "--list-current-files" ]; then SCP="scp -q -o $SSH_IDENTITY -o $SSH_HOSTKEY" PASSPHRASE=$GPG_PASSWORD duplicity --list-current-files --ssh-command "$SSH" --scp-command "$SCP" --sftp-command "$SFTP" scp://$SSH_HOST/$HOSTNAME exit 0 # Restore the given file elif [ "$1" = "--file-to-restore" ]; then if [ "$2" = "" ]; then echo "You must specify a file to restore" exit 2 fi SCP="scp -q -o $SSH_IDENTITY -o $SSH_HOSTKEY" PASSPHRASE=$GPG_PASSWORD duplicity --ssh-command "$SSH" --scp-command "$SCP" --sftp-command "$SFTP" --file-to-restore "$2" scp://$SSH_HOST/$HOSTNAME restored_`basename $2` exit 0 # Catch invalid arguments elif [ "$1" != "--full" -a "$1" != "" ]; then echo "Invalid argument: $1" exit 1 fi # Delete files related to failed backups PASSPHRASE=$GPG_PASSWORD duplicity --cleanup --verbosity 1 --sftp-command "$SFTP" scp://$SSH_HOST/$HOSTNAME # Delete old expired backups PASSPHRASE=$GPG_PASSWORD duplicity --force --remove-older-than $OLDAGE --verbosity 1 --sftp-command "$SFTP" scp://$SSH_HOST/$HOSTNAME # Dump Wiki DB and list of Debian packages mysqldump --opt $WIKIDB -uroot -p$MYSQL_PASSWORD > $DUMP_FILE dpkg --get-selections > $PKG_FILE # Check whether a full backup was requested FULLBACKUP="" if [ "$1" = "--full" ]; then FULLBACKUP="--full" fi # Do the actual backup using Duplicity PASSPHRASE=$GPG_PASSWORD duplicity $FULLBACKUP --no-print-statistics --remove-older-than $OLDAGE --verbosity 1 --exclude-device-files --include $PKG_FILE --include $DUMP_FILE --exclude-globbing-filelist $EXCLUDE_FILE --include-globbing-filelist $INCLUDE_FILE --exclude '**' --ssh-command "$SSH" --scp-command "$SCP" --sftp-command "$SFTP" / scp://$SSH_HOST/$HOSTNAME # Cleanup the temporary files rm -f $DUMP_FILE rm -f $PKG_FILE debian/dirs0000664000000000000000000000001012273216220010040 0ustar usr/bin debian/rules0000775000000000000000000000407212273216220010250 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 PREFIX := debian/duplicity/usr ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CFLAGS += -g endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif CFLAGS += $(shell dpkg-buildflags --get CFLAGS) export CFLAGS export CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) export LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. touch configure-stamp build-arch: build build-indep: build build: build-stamp build-stamp: configure-stamp dh_testdir ./testing/run-tests # Add here commands to compile the package. python setup.py build touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. rm -rf *.pyc rm -rf build dh_clean install: build dh_testdir dh_testroot dh_prep dh_installdirs # Add here commands to install the package into debian/duplicity. python setup.py install --prefix=$(PREFIX) --no-compile --install-layout=deb # remove local GnuPGInterface.py as we use the packaged version rm -f $(PREFIX)/lib/python*/*-packages/duplicity/GnuPGInterface.py # remove docs as we create them with debhelper rm -rf $(PREFIX)/share/doc/duplicity-* # Build architecture-independent files here. binary-indep: build install # Build architecture-dependent files here. binary-arch: build install # for some odd reason dh_python2 always dies with "must build for 2.5" # unless the version guessing is switched off... dh_python2 --no-guessing-versions dh_testdir dh_testroot dh_installdocs dh_installexamples dh_installman dh_installchangelogs CHANGELOG dh_link dh_strip dh_compress dh_fixperms dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure debian/patches/0000775000000000000000000000000012321250113010605 5ustar debian/patches/04-amazons30000664000000000000000000000266612301164100012514 0ustar --- a/duplicity/backends/_boto_single.py +++ b/duplicity/backends/_boto_single.py @@ -202,8 +202,7 @@ class BotoBackend(duplicity.backend.Back if not remote_filename: remote_filename = source_path.get_filename() - key = self.storage_uri.new_key() - key.key = self.key_prefix + remote_filename + key = self.bucket.new_key(self.key_prefix + remote_filename) for n in range(1, globals.num_retries+1): if n > 1: @@ -239,14 +238,16 @@ class BotoBackend(duplicity.backend.Back raise BackendException("Error uploading %s/%s" % (self.straight_url, remote_filename)) def get(self, remote_filename, local_path): - key = self.storage_uri.new_key() - key.key = self.key_prefix + remote_filename for n in range(1, globals.num_retries+1): if n > 1: # sleep before retry (new connection to a **hopeful** new host, so no need to wait so long) time.sleep(10) log.Info("Downloading %s/%s" % (self.straight_url, remote_filename)) try: + key_name = self.key_prefix + remote_filename + key = self.bucket.get_key(key_name) + if key is None: + raise BackendException("%s: key not found" % key_name) key.get_contents_to_filename(local_path.name) local_path.setdata() self.resetConnection() debian/patches/03-extraclean0000664000000000000000000000102012301164100013065 0ustar Description: update manpage wrt --extra-clean Author: Alexander Zangerl --- a/bin/duplicity.1 +++ b/bin/duplicity.1 @@ -510,6 +510,11 @@ section for more information. .B --extra-clean When cleaning up, be more aggressive about saving space. For example, this may delete signature files for old backup chains. + +.B Caution: +Without signature files those old backup chains are unrestorable. Do not +use --extra-clean unless you know what you're doing. + See the .B cleanup argument for more information. debian/patches/02-unicode0000664000000000000000000000106612301164100012376 0ustar Author: Alexander Zangerl Subject: fix unicode decode-does-encode-and-fail problems with iso8859 locales --- a/bin/duplicity +++ b/bin/duplicity @@ -33,6 +33,10 @@ import threading from datetime import datetime from lockfile import FileLock +# override locale to avoid bug #682837, until +# the logger finally deals with locales cleanly +os.environ['LC_ALL']="POSIX" + pwd = os.path.abspath(os.path.dirname(sys.argv[0])) if os.path.exists(os.path.join(pwd, "../duplicity")): sys.path.insert(0, os.path.abspath(os.path.join(pwd, "../."))) debian/patches/04-u1urldoc0000664000000000000000000000250012301164100012502 0ustar Description: improve description of u1 urls (for #697426) Author: Alexander Zangerl --- a/bin/duplicity.1 +++ b/bin/duplicity.1 @@ -1071,9 +1071,9 @@ tahoe://alias/directory .PP .BI "Ubuntu One" .br -u1://host_is_ignored/volume_path +u1://host_is_ignored/volume_name/sub_path .br -u1+http://volume_path +u1+http://volume_name/sub_path .br See also .BI "A NOTE ON UBUNTU ONE" @@ -1628,7 +1628,26 @@ for symmetric encryption and the passphr .SH A NOTE ON UBUNTU ONE -To use Ubuntu One you must have an Ubuntu One OAuth access token. Such +The Ubuntu One backend in duplicity treats URLs specially: +You can either use +.BI u1:// +or +.BI u1+http:// +in the URL schema. With the u1 URL schema you have to give a dummy +hostname (which will be ignored), followed by your Ubuntu One volume +name and path. If you use the u1+http schema, then +you'll have to give only the volume name and path in the URL. + +For example, for a volume named +.BR backups +containing the folder +.BR weekly "," +correct URLs would be +.BI u1://ignoreme/backups/weekly/ +or +.BI u1+http://backups/weekly/ + +To use Ubuntu One you must also have an Ubuntu One OAuth access token. Such OAuth tokens have a practically unlimited lifetime; you can have multiple active tokens and you can revoke tokens using the Ubuntu One web interface. .PP debian/patches/01-paramikolog0000664000000000000000000000346612301164100013262 0ustar Author: Alexander Zangerl Subject: fix logging in paramiko backend diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' duplicity-0.6.20~/duplicity/backends/_ssh_paramiko.py duplicity-0.6.20/duplicity/backends/_ssh_paramiko.py --- duplicity-0.6.20~/duplicity/backends/_ssh_paramiko.py 2012-10-28 22:23:52.000000000 +1000 +++ duplicity-0.6.20/duplicity/backends/_ssh_paramiko.py 2012-12-30 17:19:29.526043360 +1000 @@ -30,6 +30,7 @@ import sys import time import getpass +import logging from binascii import hexlify import duplicity.backend @@ -104,6 +105,30 @@ self.client = paramiko.SSHClient() self.client.set_missing_host_key_policy(AgreedAddPolicy()) + + # paramiko uses logging with the normal python severity levels, + # but duplicity uses both custom levels and inverted logic...*sigh* + self.client.set_log_channel("sshbackend") + ours=paramiko.util.get_logger("sshbackend") + dest=logging.StreamHandler(sys.stderr) + dest.setFormatter(logging.Formatter('ssh: %(message)s')) + ours.addHandler(dest) + + # ..and the duplicity levels are neither linear, + # nor are the names compatible with python logging, eg. 'NOTICE'...WAAAAAH! + plevel=logging.getLogger("duplicity").getEffectiveLevel() + if plevel <= 1: + wanted=logging.DEBUG + elif plevel <= 5: + wanted=logging.INFO + elif plevel <= 7: + wanted=logging.WARNING + elif plevel <= 9: + wanted=logging.ERROR + else: + wanted=logging.CRITICAL + ours.setLevel(wanted) + # load known_hosts files # paramiko is very picky wrt format and bails out on any problem... try: debian/patches/01-reverify0000664000000000000000000000137612301164100012606 0ustar Author: Alexander Zangerl Subject: fix #659009 by disabling validate_encryption_settings, which cannot work with public key encryption --- a/bin/duplicity +++ b/bin/duplicity @@ -350,7 +350,9 @@ def write_multivol(backup_type, tarblock mf = globals.restart.last_backup.get_local_manifest() globals.restart.checkManifest(mf) globals.restart.setLastSaved(mf) - validate_encryption_settings(globals.restart.last_backup, mf) +# az [2012-03-11 Sun 12:11] +# this conflicts with public key encryption +# validate_encryption_settings(globals.restart.last_backup, mf) mf.fh = man_outfp last_block = globals.restart.last_block log.Notice(_("Restarting after volume %s, file %s, block %s") % debian/patches/print-encode.patch0000664000000000000000000000451312321045321014223 0ustar Index: duplicity-0.6.23/bin/duplicity =================================================================== --- duplicity-0.6.23.orig/bin/duplicity 2014-04-08 15:13:30.000000000 -0400 +++ duplicity-0.6.23/bin/duplicity 2014-04-08 15:15:25.526728069 -0400 @@ -179,12 +179,12 @@ pass2 = getpass_safe(_("Retype passphrase to confirm: ")) if not pass1 == pass2: - print _("First and second passphrases do not match! Please try again.") + log.Log(_("First and second passphrases do not match! Please try again."), log.WARNING, force_print=True) use_cache = False continue if not pass1 and not (globals.gpg_profile.recipients or globals.gpg_profile.hidden_recipients) and not for_signing: - print _("Cannot use empty passphrase with symmetric encryption! Please try again.") + log.Log(_("Cannot use empty passphrase with symmetric encryption! Please try again."), log.WARNING, force_print=True) use_cache = False continue @@ -591,7 +591,8 @@ """ if globals.print_statistics: diffdir.stats.TotalDestinationSizeChange = bytes_written - print diffdir.stats.get_stats_logstring(_("Backup Statistics")) + logstring = diffdir.stats.get_stats_logstring(_("Backup Statistics")) + log.Log(logstring, log.NOTICE, force_print=True) def incremental_backup(sig_chain): Index: duplicity-0.6.23/duplicity/commandline.py =================================================================== --- duplicity-0.6.23.orig/duplicity/commandline.py 2014-01-24 07:47:37.000000000 -0500 +++ duplicity-0.6.23/duplicity/commandline.py 2014-04-08 15:15:25.526728069 -0400 @@ -65,9 +65,10 @@ ] def old_fn_deprecation(opt): - print >> sys.stderr, _("Warning: Option %s is pending deprecation " - "and will be removed in a future release.\n" - "Use of default filenames is strongly suggested.") % opt + log.Log(_("Warning: Option %s is pending deprecation " + "and will be removed in a future release.\n" + "Use of default filenames is strongly suggested.") % opt, + log.ERROR, force_print=True) def expand_fn(filename): return os.path.expanduser(os.path.expandvars(filename)) debian/patches/skip-flaky-test.patch0000664000000000000000000000130112321250113014650 0ustar Index: duplicity-0.6.23/testing/tests/restarttest.py =================================================================== --- duplicity-0.6.23.orig/testing/tests/restarttest.py 2014-01-24 07:47:38.000000000 -0500 +++ duplicity-0.6.23/testing/tests/restarttest.py 2014-04-09 09:50:45.179544815 -0400 @@ -294,6 +294,7 @@ # there should be 2 differences found, one missing file, one mtime change #self.verify("testfiles/largefiles") + @unittest.skip("Flaky test because it relies on knowning how many volumes the source files will be split into") def test_last_file_missing_at_end(self): """ Test restart when the last file being backed up is missing on restart. debian/patches/01-webdavmkcol0000664000000000000000000000474212301164100013251 0ustar Author: Alexander Zangerl Subject: fix for #693521: nested mkcols diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' duplicity-0.6.21~/duplicity/backends/webdavbackend.py duplicity-0.6.21/duplicity/backends/webdavbackend.py --- duplicity-0.6.21~/duplicity/backends/webdavbackend.py 2013-01-24 00:35:56.000000000 +1000 +++ duplicity-0.6.21/duplicity/backends/webdavbackend.py 2013-05-24 11:29:07.278763182 +1000 @@ -272,11 +272,8 @@ del self.headers['Depth'] # if the target collection does not exist, create it. if response.status == 404: - response.close() - log.Info("Directory '%s' being created." % self.directory) - response = self.request("MKCOL", self.directory) - log.Info("WebDAV MKCOL status: %s %s" % (response.status, response.reason)) - response.close() + response.close() # otherwise next request fails with ResponseNotReady + self.makedir() # just created folder is so return empty return [] elif response.status in [200, 207]: @@ -301,6 +298,32 @@ finally: if response: response.close() + def makedir(self): + """Make (nested) directories on the server.""" + dirs = self.directory.split("/") + # url causes directory to start with /, but it might be given + # with or without trailing / (which is required) + if dirs[-1] == '': + dirs=dirs[0:-1] + for i in range(1,len(dirs)): + d="/".join(dirs[0:i+1])+"/" + + self.close() # or we get previous request's data or exception + self.headers['Depth'] = "1" + response = self.request("PROPFIND", d) + del self.headers['Depth'] + + log.Info("Checking existence dir %s: %d" % (d, response.status)) + + if response.status == 404: + log.Info("Creating missing directory %s" % d) + self.close() # or we get previous request's data or exception + + res = self.request("MKCOL", d) + if res.status != 201: + raise BackendException("WebDAV MKCOL %s failed: %s %s" % (d,res.status,res.reason)) + self.close() + def __taste_href(self, href): """ Internal helper to taste the given href node and, if debian/patches/getpass-encode.patch0000664000000000000000000002167012302144365014547 0ustar Index: duplicity-0.6.23/bin/duplicity =================================================================== --- duplicity-0.6.23.orig/bin/duplicity 2014-01-24 07:47:38.000000000 -0500 +++ duplicity-0.6.23/bin/duplicity 2014-02-22 10:42:37.528344003 -0500 @@ -27,7 +27,7 @@ # Please send mail to me or the mailing list if you find bugs or have # any suggestions. -import getpass, gzip, os, sys, time, types +import gzip, os, sys, time, types import traceback, platform, statvfs, resource, re import threading from datetime import datetime @@ -37,9 +37,6 @@ if os.path.exists(os.path.join(pwd, "../duplicity")): sys.path.insert(0, os.path.abspath(os.path.join(pwd, "../."))) -import gettext -gettext.install('duplicity', codeset='utf8') - from duplicity import log log.setup() @@ -65,6 +62,13 @@ # If exit_val is not None, exit with given value at end. exit_val = None +def getpass_safe(message): + # getpass() in Python 2.x will call str() on our prompt. So we can't pass + # in non-ascii characters. + import getpass, locale + message = message.encode(locale.getpreferredencoding(), 'replace') + return getpass.getpass(message) + def get_passphrase(n, action, for_signing = False): """ Check to make sure passphrase is indeed needed, then get @@ -160,19 +164,19 @@ if use_cache and globals.gpg_profile.signing_passphrase: pass1 = globals.gpg_profile.signing_passphrase else: - pass1 = getpass.getpass(_("GnuPG passphrase for signing key:")+" ") + pass1 = getpass_safe(_("GnuPG passphrase for signing key:")+" ") else: if use_cache and globals.gpg_profile.passphrase: pass1 = globals.gpg_profile.passphrase else: - pass1 = getpass.getpass(_("GnuPG passphrase:")+" ") + pass1 = getpass_safe(_("GnuPG passphrase:")+" ") if n == 1: pass2 = pass1 elif for_signing: - pass2 = getpass.getpass(_("Retype passphrase for signing key to confirm: ")) + pass2 = getpass_safe(_("Retype passphrase for signing key to confirm: ")) else: - pass2 = getpass.getpass(_("Retype passphrase to confirm: ")) + pass2 = getpass_safe(_("Retype passphrase to confirm: ")) if not pass1 == pass2: print _("First and second passphrases do not match! Please try again.") Index: duplicity-0.6.23/bin/rdiffdir =================================================================== --- duplicity-0.6.23.orig/bin/rdiffdir 2014-01-24 07:47:38.000000000 -0500 +++ duplicity-0.6.23/bin/rdiffdir 2014-02-22 10:42:37.528344003 -0500 @@ -27,9 +27,6 @@ import sys, getopt, gzip, os -import gettext -gettext.install('duplicity', codeset='utf8') - from duplicity import diffdir from duplicity import patchdir from duplicity import log Index: duplicity-0.6.23/testing/run-tests =================================================================== --- duplicity-0.6.23.orig/testing/run-tests 2014-01-24 07:47:38.000000000 -0500 +++ duplicity-0.6.23/testing/run-tests 2014-02-22 10:42:37.528344003 -0500 @@ -25,9 +25,9 @@ THISDIR=$(pwd) export TZ=US/Central -export LANG= +export LANG=en_US.UTF-8 # up for 'duplicity' module and here for 'helper.py' -export PYTHONPATH="$(dirname $THISDIR):$THISDIR/helpers" +export PYTHONPATH="$THISDIR/overrides:$(dirname $THISDIR):$THISDIR/helpers" export GNUPGHOME="$THISDIR/gnupg" export PATH="$(dirname $THISDIR)/bin:$PATH" Index: duplicity-0.6.23/testing/tests/finaltest.py =================================================================== --- duplicity-0.6.23.orig/testing/tests/finaltest.py 2014-01-24 07:47:38.000000000 -0500 +++ duplicity-0.6.23/testing/tests/finaltest.py 2014-02-22 10:42:37.532344003 -0500 @@ -20,6 +20,7 @@ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import helper +from duplicity import pexpect import sys, os, unittest import duplicity.backend @@ -50,7 +51,8 @@ """ Test backup/restore using duplicity binary """ - def run_duplicity(self, arglist, options = [], current_time = None): + def run_duplicity(self, arglist, options = [], current_time = None, + passphrase_input = None): """Run duplicity binary with given arguments and options""" options.append("--archive-dir testfiles/cache") cmd_list = ["duplicity"] @@ -62,22 +64,23 @@ cmd_list.extend(arglist) cmdline = " ".join(cmd_list) #print "Running '%s'." % cmdline - if not os.environ.has_key('PASSPHRASE'): + if passphrase_input is None and not os.environ.has_key('PASSPHRASE'): os.environ['PASSPHRASE'] = 'foobar' - return_val = os.system(cmdline) + (output, return_val) = pexpect.run(cmdline, withexitstatus=True, + events={'passphrase.*:': passphrase_input}) if return_val: raise CmdError(return_val) - def backup(self, type, input_dir, options = [], current_time = None): + def backup(self, type, input_dir, options = [], **kwargs): """Run duplicity backup to default directory""" options = options[:] if type == "full": options.insert(0, 'full') args = [input_dir, "'%s'" % backend_url] - self.run_duplicity(args, options, current_time) + self.run_duplicity(args, options, **kwargs) def restore(self, file_to_restore = None, time = None, options = [], - current_time = None): + **kwargs): options = options[:] # just nip any mutability problems in bud assert not os.system("rm -rf testfiles/restore_out") args = ["'%s'" % backend_url, "testfiles/restore_out"] @@ -85,17 +88,17 @@ options.extend(['--file-to-restore', file_to_restore]) if time: options.extend(['--restore-time', str(time)]) - self.run_duplicity(args, options, current_time) + self.run_duplicity(args, options, **kwargs) def verify(self, dirname, file_to_verify = None, time = None, options = [], - current_time = None): + **kwargs): options = ["verify"] + options[:] args = ["'%s'" % backend_url, dirname] if file_to_verify: options.extend(['--file-to-restore', file_to_verify]) if time: options.extend(['--restore-time', str(time)]) - self.run_duplicity(args, options, current_time) + self.run_duplicity(args, options, **kwargs) def deltmp(self): """Delete temporary directories""" @@ -255,6 +258,12 @@ assert chain.start_time == 30000, chain.start_time assert chain.end_time == 40000, chain.end_time + def test_piped_password(self): + """Make sure that prompting for a password works""" + self.backup("full", "testfiles/empty_dir", + passphrase_input="foobar\nfoobar\n") + self.restore(passphrase_input="foobar\n") + class FinalTest1(FinalTest, unittest.TestCase): def setUp(self): assert not os.system("tar xzf testfiles.tar.gz > /dev/null 2>&1") Index: duplicity-0.6.23/testing/overrides/gettext.py =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ duplicity-0.6.23/testing/overrides/gettext.py 2014-02-22 10:44:53.172339995 -0500 @@ -0,0 +1,34 @@ +# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf8 -*- +# +# Copyright 2014 Michael Terry +# +# This file is part of duplicity. +# +# Duplicity is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# Duplicity is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with duplicity; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This is just a small override to the system gettext.py which allows us to +# always return a string with fancy unicode characters, which will notify us +# if we ever get a unicode->ascii translation by accident. + +def translation(*args, **kwargs): + class Translation: + ZWSP = u"​" # ZERO WIDTH SPACE, basically an invisible space separator + def install(self, **kwargs): + import __builtin__ + __builtin__.__dict__['_'] = lambda x: x + self.ZWSP + def ungettext(self, one, more, n): + if n == 1: return one + self.ZWSP + else: return more + self.ZWSP + return Translation() debian/patches/series0000664000000000000000000000013012321247717012034 0ustar 03-extraclean 04-u1urldoc getpass-encode.patch print-encode.patch skip-flaky-test.patch debian/NEWS.Debian0000664000000000000000000001063212273216220011047 0ustar duplicity (0.6.20-3) unstable; urgency=low Duplicity and locales This version of duplicity completely ignores your locale settings and uses POSIX instead, because under some locales (e.g. fr_FR.utf8) the logger causes duplicity to crash (see bug #682837). -- Alexander Zangerl Tue, 05 Mar 2013 12:43:16 +1000 duplicity (0.6.18-4) unstable; urgency=low Reworked Ubuntu One backend This version includes a reworked standalone backend for Ubuntu One, which no longer requires Gnome, an X11 session or software that's not packaged for Debian. The backend requires the python-oauth and -httplib2 packages and duplicity therefore now recommends them. Check the man page for details about Ubuntu One authentication. -- Alexander Zangerl Thu, 18 Oct 2012 13:07:36 +1000 duplicity (0.6.17-1) unstable; urgency=low New sftp/scp backend This version of duplicity comes with a new sftp/scp backend, which does no longer use sftp/scp client programs and pexpect but instead relies on paramiko, a python ssh+sftp implementation. The options --scp-command and --sftp-command are thus obsolete, ignored and a deprecation warning is shown if they are used. At this time the sftp/scp module supports only one ssh option (given in --ssh-options): -oIdentityfile=some_key_file All other ssh options are silently ignored. The dependencies have been updated: duplicity now recommends rsync and paramiko (covering the most common use cases) and suggests the required modules for all other supported storage backends. -- Alexander Zangerl Sun, 01 Jan 2012 16:04:13 +1000 duplicity (0.6.08b-1) unstable; urgency=low With 0.6.06 duplicity stopped removing old data properly, EXCEPT when one ran a cleanup option with --extra-clean enabled. Note that normal remove* ops are not sufficient for a proper clean. (the cause is changeset 616, lp:~mterry/duplicity/list-old-chains) This has lead to numerous problems wrt. the archive dir cache growing without bounds as well as some cache desynchronization issues. It's also extremely counter-intuitive: despite requesting removals not enough data is removed. Until upstream resolves this problem properly, the Debian version of duplicity now automatically and unconditionally runs a cleanup operation after a successful remove-older-than or remove-all-but-n-full operation. The definition of "successful" in this context: --force was enabled, and the remove op found something to remove. This forced cleanup is run with --extra-clean active. -- Alexander Zangerl Mon, 15 Mar 2010 20:52:56 +1000 duplicity (0.6.04-1) unstable; urgency=low The --archive-dir handling has changed substantially in 0.6, in ways that affect existing backups. Duplicity now requires an archive dir, and if you don't give it one explicitly it will use ~/.cache/duplicy/. To distinguish between multiple backups, a per-backup subdirectory of the archive dir is used. This suffix is a hash of the target url or can be set with --name. The suffix is ALWAYS ADDED, the archive dir itself is no longer used. Consequences: * If you have existing backups with an archive dir (where you had to specify unique archive dirs), you must add an appropriate --name to have duplicity use the right archive directory. Using your existing, specific --archive-dir and --name '' works. * If you do not do that or if you have no existing archive dir, then duplicity will create a new archive dir and synchronize/recreate the archive dir content from the remote repository. If you use encryption then the first duplicity run (attempting this resynchronization) will fail unless you give it the encryption passphrase (or access to and passphrase of the relevant gnupg key) - local archive dir contents are not encrypted but remote repositories are. For existing backups I'd highly recommend that you run a collection-status first, with the appropriate --archive-dir and --name. It may pay off to ls the archive dir afterwards, confirming that no unintended --name subdirs have been created. After that step any required resynchronizations should be complete and duplicity should again work fine for unattended backups with or without encryption. -- Alexander Zangerl Fri, 31 Jul 2009 10:50:30 +1000debian/control0000664000000000000000000000225312301163062010567 0ustar Source: duplicity Section: utils Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Alexander Zangerl Build-Depends: debhelper (>= 8.0.0), librsync-dev (>=0.9.6), python-dev (>= 2.6.6-3), rdiff, gnupg, python-lockfile, python-mock Standards-Version: 3.9.5 XS-Testsuite: autopkgtest X-Python-Version: >= 2.5 Package: duplicity Architecture: any Homepage: http://duplicity.nongnu.org/ Depends: ${shlibs:Depends}, ${python:Depends}, ${misc:Depends}, python-lockfile Suggests: rsync, python-paramiko, python-urllib3, python-oauthlib, python-boto, ncftp, python-cloudfiles, lftp, python-gdata, tahoe-lafs, python-swiftclient Breaks: deja-dup (<< 29.5) Description: encrypted bandwidth-efficient backup Duplicity backs directories by producing encrypted tar-format volumes and uploading them to a remote or local file server. Because duplicity uses librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server. debian/docs0000664000000000000000000000003212273216220010033 0ustar README debian/NEWS.Debian debian/copyright0000664000000000000000000000615212273216220011124 0ustar This package was originally debianized by Martin Wuertele in 2003. Since April 2007 it is maintained by Alexander Zangerl . It was downloaded from http://www.nongnu.org/duplicity/ Upstream Authors: Ben Escoto (duplicity author) Jiri Tyr (sftp) intrigeri (sftp-command) Mathias Wagner (compress) Joey Hess (bashishm) Copyright: duplicity: Copyright 2002, 2003, 2004, 2005, 2006 Ben Escoto 2005 Jiri Tyr 2006 intrigeri 2006 Mathias Wagner 2006 Joey Hess This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. tarfile: Copyright (C) 2002 Lars Gustäbel All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. gnupginterface: COPYRIGHT: Copyright (C) 2001 Frank J. Tobin, ftobin@neverending.org LICENSE: This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. or see http://www.gnu.org/copyleft/lesser.html debian/source/0000775000000000000000000000000012273216221010466 5ustar debian/source/format0000664000000000000000000000001412273216220011673 0ustar 3.0 (quilt) debian/watch0000664000000000000000000000014412273216220010215 0ustar version=3 http://download.savannah.gnu.org/releases/duplicity/duplicity-([0-9.]+[a-zA-Z]*)\.tar\.gz debian/duplicity.examples0000664000000000000000000000003612273216220012732 0ustar debian/examples/system-backup