Duplicity Changelog

What's new in Duplicity 0.8.09

Jan 8, 2020
  • * Fixed bug #1855636 with patch from Filip Slunecko
  • - Wrong buf type returned on error. Make bytes.
  • * Fixed bug #1855736 with help from Michael Terry
  • - Decode Popen output to utf8
  • * Fixed bug #1856447 with hint from Enno L
  • - Replaced with formatted string
  • * Fixed bug #1855736 - duplicity fails to start
  • - Made imports absolute in dup_main.py
  • * Fixed a mess I made. setup.py was shebanged to
  • Py3, duplicity was shebanged to Py2. This meant
  • that duplicity ran as Py2 but could not find its
  • modules because they were under Py3. AArgh!
  • * Renamed testing/infrastructure to testing/docker
  • * Merged in lp:~ed.so/duplicity/boto.fixup
  • - fix manpage indention
  • - clarify difference between boto backends
  • - add boto+s3:// for future use when boto3+s3://
  • will become default s3 backend
  • * Fixed bug #1857554 name 'file' is not defined
  • - file() calls replaced by open() in 3 places.
  • * Convert all shebangs to python3 for bug #1855736
  • * Fix bytes/string differences in subprocess_popen()
  • - Now returns unicode string not bytes, like python2
  • * Fix bug #1857734 - TypeError in ssh_paramiko_backend
  • - conn.recv() can return bytes or string, make string
  • * Fix bug #1858153 with patch from az
  • - mega backend: fails to create directory
  • * Add snapcraft login to makesnap
  • * Fixed bug #1858295 - Unicode error in source filename
  • - decode arg if it comes in as bytes
  • * Fixed bug #1855736 again - Duplicity fails to start
  • - remove decode from unicode string
  • * Merged in translation updates

New in Duplicity 0.8.08 (Dec 8, 2019)

  • * Fixed bug #1852848 with patch from Tomas Krizek
  • - B2 moved the API from "b2" package into a separate "b2sdk" package.
  • Using the old "b2" package is now deprecated. See link:
  • https://github.com/Backblaze/B2_Command_Line_Tool/blob/master/b2/_sdk_deprecation.py
  • - b2backend.py currently depends on both "b2" and "b2sdk", but use of "b2"
  • is enforced and "b2sdk" isn't used at all.
  • - The attached patch uses "b2sdk" as the primary dependency. If the new
  • "b2sdk" module isn't available, it falls back to using the old "b2" in
  • order to keep backward compatibility with older installations.
  • * Added build signing to dist/makesnap.
  • * Fixed bug #1852876 '_io.BufferedReader' object has no attribute 'uc_name'
  • - Fixed a couple of instances where str() was used in place of util.uexc()
  • - The file was opened with builtins, so use name, not uc_name
  • * Fixed bug #1851668 with help from Wolfgang Rohdewald
  • - Applied patches to handle translations.
  • * Fixed bug #1853655 - duplicity crashes with --exclude-older-than
  • - The exclusion setup checked for valid string only. Made
  • the code comprehend datetime (int) as well.
  • * Fixed bug #1853809 - Tests failing with Python 3.8 / Deprecation warnings
  • - Fixed the deprecation warnings with patch from Sebastien Bacher
  • - Fixed test_globmatch to handle python 3.8 same as 3.7
  • - Fixed tox.ini to include python 3.8 in future tests
  • * Merged in lp:~carlalex/duplicity/duplicity
  • - Fixes bug #1840044: Migrate boto backend to boto3
  • - New module uses boto3+s3:// as schema.
  • * Fixed bug #1855379 with patch from Daniel González Gasull
  • - Issue warning on temporary connection loss.
  • * Fixed bug #1854554 with help from Tommy Nguyen
  • - Fixed a typo made during Python 3 conversion.
  • * Merged in translation updates

New in Duplicity 0.8.07 (Nov 15, 2019)

  • Added b2sdk to snapcraft.yaml
  • * Fixed bug #1850440 with suggestion from Paolo Montrasio
  • - TypeError: Can't mix strings and bytes in path components
  • * Fixed bug #1850990 with suggestion from Jon Wilson
  • - --s3-use-glacier and --no-encryption cause slow backups
  • * Added dist/makesnap to make spaps automagically.
  • * Fixed bug #1851167 with help from Aspen Barnes
  • - Had Popen() to return strings not bytes
  • * Merged in lp:~mterry/duplicity/pydrive-cache-fix
  • - The pydrive backend had another of the ongoing bytes/string issues. :)
  • - This time, it was saving a bytes filename in its internal cache after
  • each volume upload. Then when asked for a list of files later, it
  • would add the byte-filenames from its cache to the results.
  • And we'd end up thinking there were two of the same filename on the backend,
  • which would cause a crash at the end of an otherwise successful backup,
  • because the collections code would assert on the filenames being unique.
  • * Merged in lp:~mterry/duplicity/resume-encrypt-no-pass
  • - This branch arose from a Debian patch that has been disabling the
  • encryption validation of volume1 during restarts for years.
  • - Debian has been preserving the ability to back up with just an encrypt
  • key and no password (i.e. to have no secrets on the backup machine).
  • * Fixed bug #1851727 - InvalidBackendURL for multi backend
  • - Encode to utf8 only on Python2, otherwise leave as unicode
  • * Merged in translation updates

New in Duplicity 0.8.06 (Nov 6, 2019)

  • * Removed a setting in tox.ini that causes coverage to be activated during testing duplicity.
  • * Fixed Resouce warnings when using paramiko. It turns out that duplicity's ssh_paramiko_backend.py was not handling warning suppression and ended up clearing all warnings, including those that default to off.
  • * Updated b2 backend to work with both v0 and v1 of b2sdk
  • * Fixed bug #1847885 - B2 fails on string concatenation.
  • - use util.fsdecode() to get a string not bytes.
  • - Partially fixed in bug #1843995, this applies same fix to
  • remaining instances of the problem
  • * Fixed bug #1848203 with patch from Michael Apozyan
  • - convert to integer division
  • * Fixed bug #1626061 with patch from Michael Apozyan
  • - While doing multipart upload to s3 we need to report the total size of uploaded data, and not the size of each part individually. So we need to keep track of all parts uploaded so far and sum it up on the fly.
  • * Fixed bug #1848783 with patch from Jacob Middag
  • - Don't use byte strings in regex
  • * Fixed bug #1848166 - Swift backend fails on string concat
  • - added util.fsdecode() where needed
  • * Fixed bug #1849661 with patch from Graham Cobb
  • - The problem is that b2backend uses 'quote_plus' on the destination URL without specifying the 'safe' argument as '/'. Note that 'quote' defaults 'safe' to '/', but 'quote_plus' does not!
  • * Added additional fsdecode's to uses of local_path.name and source_path.name in b2backend's _get() and _put. See bug #1847885 for more details.
  • * Removed a couple of disables from pylint code test.
  • - E1103 - Maybe has no member
  • - E0712 - Catching an exception which doesn't inherit from BaseException
  • * Revisited bug #1848783 - par2+webdav raises TypeError on Python 3
  • - Fixed so bytes filenames were compared as unicode in re.match()
  • * Removed file() call in swiftbackend. It's been deprecated since py2.
  • * Updated snapcraft.yaml to include rdiffdir and did some reformatting.
  • * Updated snapcraft.yaml to remove rdiffdir and add libatm1 to stage.
  • * Updated snapcraft.yaml to remove python-lockfile and fix spelling.
  • * Merged in translation updates

New in Duplicity 0.8.05 (Oct 7, 2019)

  • * Changed dist/makedist to fall back to dist/relfiles.txt
  • in case bzr or git is not available to get files list.
  • Tox sdist needs setup.py which needs dist/makedist.
  • * Updatated LINGUAS file to add four new translations.
  • * Set to allow pydevd usage during tox testing.
  • * Adjust exclusion list for rsync into duplicity_test.
  • * Fix exc.args handling. Sometimes it's (message, int),
  • other times its (int, message). We look for the
  • message and use that for the exception report.
  • * Added more python future includes to support using
  • python3 code mixed with python2.
  • * Sort of fix bugs #1836887 and #1836888 by skipping the
  • tests under question when running on ppc64el machines.
  • * Fix MacOS tempfile selection to avoid /tmp and /var/tmp. See:
  • https://lists.nongnu.org/archive/html/duplicity-talk/2019-09/msg00000.html
  • * Add testenv:coverage and took it out of defaults. Some cleanup.
  • * Clean up some pylint warnings.
  • * Fixed bug #1843995 - B2 fails on string concatenation.
  • - use util.fsdecode() to get a string not bytes.
  • * Fixed bug #1844750 - RsyncBackend fails if used with multi-backend.
  • - used patch provided by KDM to fix.
  • * Fixed bug reported on maillist - Python error in Webdav backend. See:
  • https://lists.nongnu.org/archive/html/duplicity-talk/2019-09/msg00026.html
  • * Fixed bug #1846167 - webdavbackend.py: expected bytes-like object, not str
  • - base64 now returns bytes where it used to be strings, so just decode().
  • * Fixed bug #1844950 - ssh-pexpect backend syntax error
  • - put the global before the import.
  • * Fixed bug #1846678 - --exclude-device-files and -other-filesystems crashes
  • - assuming all options had arguments was fixed.
  • * Merged in translation updates

New in Duplicity 0.8.04 (Aug 31, 2019)

  • * Fixed bug #1839728 with info from Avleen Vig
  • - b2 backend requires additional import
  • * Fixed bug #1839886 with hint from denick
  • - Duplicity crashes when using --file-prefix
  • * Removed socket.settimeout from backend.py.
  • It was already set in commandline.py.
  • * Removed pycryptopp from README requirements
  • * Merged in lp:~aaron-whitehouse/duplicity/08-snap-python2
  • - Add packaging code for Snapcraft/Snap packages
  • * Fixed build on Launchpad for 0.8.x, so now there is a new PPA at
  • https://launchpad.net/~duplicity-team/+archive/ubuntu/daily-dev-trunk
  • * Ran futurize selectively filter-by-filter to find the ones that work.
  • * Merged in lp:~aaron-whitehouse/duplicity/08-README-TESTING
  • - Change README-TESTING to be correct for running individual tests
  • now that we have moved to Tox/Pytest.
  • * Merged in lp:~kaffeekiffer/duplicity/azure-filename
  • - Encode Azure back-end paths
  • * Merged in lp:~aaron-whitehouse/duplicity/08-docker-local-import
  • - Convert the Docker infrastructure to pull the local branch into
  • duplicity_test. This allows testing the local branch with the
  • known-good Docker environment, even if it has not yet been
  • committed to trunk.
  • - As a consequence, remove the -r option to build-duplicity_test.sh.
  • This functionality can be achieved by branching that revision
  • before running the script.
  • * Made some changes to the Docker infrastructure:
  • - All scripts run from any directory, assuming directory
  • structure remains the same.
  • - Changed from Docker's COPY internal command which is slow to
  • using external rsync which is faster and allows excludes.
  • - Removed a couple of unused files.
  • * Merged in translation updates

New in Duplicity 0.8.03 (Aug 16, 2019)

  • Some changes to provide Python test coverage:
  • - Coverage runs with every test cycle
  • - Does not cover functional tests that spawn
  • duplicity itself. Next pass.
  • - After a run use 'coverage report html' to see
  • an overview list and links to drill down. It
  • shows up in htmlcov/index.html.
  • * Fixed bugs #1838427 and #1838702 with a fix
  • suggested by Stephen Miller. The fix was to
  • supply tarfile with a unicode grpid, not bytes.
  • * More changes to provide Python test coverage:
  • - Now covers functional tests spawning duplicity
  • - Does not cover bin/duplicity for some reason
  • * More changes to provide Python test coverage:
  • - Moved bulk of code from bin/duplicity to
  • duplicity/dup_main.py for coverage.
  • * Fixed some 2to3 issues in dup_main.py
  • * Fixed division differences with futurize
  • * Merged in translation updates

New in Duplicity 0.8.02 (Jul 29, 2019)

  • Remove python-gettext from requirements.txt. Normal
  • Python installation includes gettext.
  • * Mod README to include Python 3.6 and 3.7
  • * Fixed bug #1836829 progress.py: old_div not defined
  • - also fixed old_div in _boto_multi.py
  • * Merged in lp:~limburgher/duplicity/dropbox
  • - Fixes bug #1836611 dropbox mixing bytes and strings
  • * Merged in lp:~stragerneds/duplicity/duplicity
  • - Cache results of filename parsing for speedup
  • * Removed python-gettext from setup.py. Whoops!
  • * Merged in lp:~mterry/duplicity/pytest-runner-move
  • - Move pytest-runner to testing requirements in setup
  • * Fix language classifiers in setup.py
  • * Remove speedup in testing backup. The math was correct,
  • but it's failing on Docker and Launchpad testing.
  • * Fix so Docker image duplicity_test will update and pull
  • new bzr revisions if changed since last build.
  • * Enhanced build_duplicity_test.sh
  • - Use -h to get help and defaults
  • - Takes arguments for distro, revno, help
  • - Distros supported are 18.04, 18.10, 19.04, 19.10
  • - Revnos are passed to bzr -r option
  • * Merged in po-updates.
  • * Fixed bug #1829416 with help from charlie4096
  • - onedrive: Can’t convert ‘bytes’ object to str implicitly
  • * Fix dist/makedist to run on python3

New in Duplicity 0.8.01 (Jul 23, 2019)

  • * Merged in lp:~mterry/duplicity/gio-pydrive-fsdecode
  • - Fix gio and pydrive backends to use fsdecode
  • * Merged in lp:~mterry/duplicity/uexc-string
  • - The return type of util.uexc should always be a string.
  • * Fix some import conflicts with the "past" module
  • - Rename collections.py to dup_collections.py
  • - Remove all "from future.utils import old_div"
  • - Replace old_div() with "//" (in py27 for a while).
  • - All tests run for py3, unit tests run for py2. The new
  • import fail is "from future import standard_library"
  • * Fixed bug #1831178 sequence item 0: expected str instance, int found
  • - Simply converted int to str when making list
  • * Merged in lp:~kaffeekiffer/duplicity/azure-python3-fix
  • - Use util.fsencode to encode file string
  • * Fixed bug #1833573 0.8.00 does not work on Python 2
  • - Fixed shebang to use /usr/bin/python instead of python
  • * Fixed bug #1833559 0.8 test fails with 'duplicity not found' errors
  • - Fixed assumption that duplicity/rdiffdir were in $PATH
  • * Fixed failing test in testing/unit/test_globmatch.py
  • - Someone is messing with regex. Fix same.
  • - See https://bugs.python.org/issue29995 for details
  • * Normalize shebang to just python, no version number
  • * Fix so most testing/*.py files have the future suggested lines
  • - from __future__ import print_function
  • from future import standard_library
  • standard_library.install_aliases()
  • * Merged lp:~mterry/duplicity/boto-import
  • - A couple functions in the boto backend were using the boto module
  • without importing it first.
  • * Merged in lp:~aaron-whitehouse/duplicity/08-dockerfixes
  • - Update duplicity_test Dockerfile:
  • * Use 18.04 instead of 16.04
  • * Use Ubuntu 18.04 version of pip
  • * Add Python3 and 2to3 as a dependencies
  • * Set docker locale as UTF-8
  • * Merged in lp:~mterry/duplicity/s3fsdecode
  • - Fix s3 backups by encoding remote filenames
  • * Fix reimport problem where "from future.builtins" was being treated
  • the differently than "from builtins". They are both the same, so
  • converted to shorter form "from builtins" and removed duplicates.
  • * Fix reversed port assignments (FTP & SSH) in docker-compose.yml.
  • * Fix some issues found by test_code.py.
  • * Fix warning in _librsync.c module.
  • * Add encoding to logging.FileHandler call to make log file utf8.
  • * Ensure _librsync.so is regenned before tox testing.
  • * Adjust POTFILES.in for compilec.py move.
  • * Fix so we start duplicity with the base python we run under.
  • * Another unadorned string.
  • * Cleanup some trailing spaces/lines in Docker files.
  • * Make sure test filenames a bytes not unicode.
  • * Fix test_glob_to_regex to work on Python 3.7
  • * Install python3.6 and 3.7 explicitly in Dockerfile. Tox and Docker
  • now support testing Python 2,7, 3.6, and 3.7.
  • * Comment out HSIBackendTest since shim is not up-to-date.
  • * Merged in po-updates.

New in Duplicity 0.8.00 (May 30, 2019)

  • * Merged in lp:~aaron-whitehouse/duplicity/remove-python26
  • - Remove Python 2.6 support references and tests.
  • * Fixed bug #1600692 with patch from Wolfgang Rohdewald
  • - Allow symlink to have optional trailing slash during verify.
  • * Merged in lp:~aaron-whitehouse/duplicity/07-fix_deja_dup_error_on_locked_files
  • - Revert log.Error to log.Warn, as it was prior to the merge in rev 1224,
  • as this was affecting other applications (e.g. deja dup; Bug #1605939).
  • * Merged in lp:~mwilck/duplicity/duplicity
  • - Speedup of path_matches_glob() by about 8x. See
  • https://code.launchpad.net/~mwilck/duplicity/duplicity/+merge/301268
  • for more details.
  • * Fixed conflict in merge from Martin Wilck and applied
  • - https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301492
  • - merge fixes setsid usage in functional testing.
  • * Fixed bug #1612472 with patch from David Cuthbert
  • - Restore from S3 fails with --with-prefix-archive if prefix includes '/'
  • * Merged in lp:~arashad.ahamad/duplicity/duplicity_latest
  • - Changes for connecting to IBM Bluemix ObjectStorage. See man page.
  • * Merged in lp:~fenisilius/duplicity/acd_init_mkdir
  • - Allow duplicity to create remote folder
  • * Fixed bugs #815510 and #1615480
  • - Changed default --volsize to 200MB
  • * Merged in lp:~mstoll-de/duplicity/duplicity
  • - Backblaze announced a new domain for the b2 api
  • * Fixed bug #1623342 with patch from Daniel Jakots
  • - failing test on OpenBSD because tar/gtar not found
  • * Merged in lp:~mwilck/duplicity/duplicity
  • - GPG: enable truly non-interactive operation with gpg2
  • - This patch fixes the IMO unexpected behavior that, when using GnuPG2, a pass phrase dialog always pops up for
  • saving backups. This is particularly annoying when trying to do unattended / fully automatic backups.
  • * Fixed bug #1621194 with code from Tornhoof
  • - Do backup to google drive working without a service account
  • * Merged in lp:~havard/duplicity/jottacloudbackend
  • - Adds support for a new backend, jottacloud.com, using the scheme `jottacloud:/`.
  • - Reverse-engineered library, `jottalib`: http://github.com/havardgulldahl/jottalib
  • - Here's how you set up jottalib https://github.com/havardgulldahl/jottalib/wiki
  • * Merged in lp:~breunigs/duplicity/amazondrive
  • - Provide a native backend for AmazonDrive
  • * Merged in lp:~breunigs/duplicity/amazondrive2
  • - Fixed variable renaming issue
  • * Fixed bug #1642098 - does not create PAR2 archives when '--par2-options' is used
  • - Missing space between par2-options plus default options
  • * Fix bug using 40-char sign keys, from Richard McGraw on mail list
  • - Remove truncation of argument and adjust comments
  • * Merged in lp:~dernils/duplicity/robust-dropbox-backend
  • - Added new command line option --backend-retry-delay
  • that allows to determine the time that duplicity sleeps
  • before retrying after an error has occured.
  • - Added some robustness to dpbxbackend.py that ensures re-authentication
  • happens in case that a socket is changed (e.g. due to a forced reconnect
  • of a dynamic internet connection).
  • * Merged in lp:~ed.so/duplicity/manpage.fixes
  • - Fix html output via rman on the website
  • * Merged in lp:~horgh/duplicity/copy-symlink-targets-721599
  • - Add --copy-links to copy symlink contents, not just the link itself.
  • * Merged in lp:~aaron-whitehouse/duplicity/Bug_1624725_files_within_folder_slash
  • - Fixed Bug #1624725, so that an include glob ending in "/" now includes folder contents (for globs with
  • and without special characters). This preserves the behaviour that an expression ending in "/" only
  • matches a folder, but now the contents of any matching folder is included.
  • * Fix some issues with testing on MacOS
  • * Fix problem with gpg2 in yakety and zesty
  • * Fix Bug #1642813 with patch from Ravi
  • - If stat() returns None, don't attempt to set perms.
  • * Merged in lp:~breunigs/duplicity/amazondrive3
  • - As reported on the mailinglist, if a space is entered while duplicity asks for the URL, it fails.
  • Since all important spaces are URL encoded anyway, this should be fine even if there are spaces in
  • the URL at all. I also patched it in the onedrive backend, because it must have similar issues.
  • * Fixed bug #1623342 with patch supplied by Daniel Jakots
  • - Failing test on OpenBSD because tar/gtar not found
  • * Fixed bug #1654220 with patch supplied by Kenneth Newwood
  • - Duplicity fails on MacOS because GPG version parsing fails
  • * Merged in lp:~aaron-whitehouse/duplicity/0-8-merge_selection_tests
  • - Merge in TestExcludeIfPresent from 0.7-series, which tests the behaviour of
  • duplicity's --exclude-if-present option.
  • - Move and rename TestTrailingSlash2 test (was duplicate name) as in 0.7-series.
  • - Fix PEP error on adbackend.py.
  • - Add jottalib as a tox dep to fix pylint error.
  • - Remove unnecessary skipUnless Linux as per 0.7-series.
  • * Fixed bug #1655268 "--gpg-binary option not working"
  • - If gpg binary is specified rebuild gpg profile using new binary location
  • * Merged in lp:~matthew-t-bentley/duplicity/duplicity
  • - Sets a user agent. Backblaze asked for this in case there are errors that originate
  • from the Duplicity B2 backend
  • - Only retrieves a new upload URL when the current one expires, to bring it in line
  • with their best practices for integrations: https://www.backblaze.com/b2/docs/integration_checklist.html
  • * Merged in lp:~aaron-whitehouse/duplicity/08-merge-glob-parsers
  • - Use a single code path for glob strings whether or not these contain special
  • characters/wildcards (glob_get_normal_sf) and remove glob_get_filename_sf and glob_get_tuple_sf.
  • - Remove run-tests-ve as this was identical to run-tests.
  • * Add detail about import exceptions in onedrivebackend.py
  • * Merged in lp:~aaron-whitehouse/duplicity/08-refactor-unit-test-globmatch
  • - Rename path_matches_glob_fn to select_fn_from_glob, as this more accurately reflects the return value.
  • - Significantly refactored unit/test_globmatch.py to make this cleaner and clearer.
  • * Fixed bug #1657916 with patch supplied by Daniel Harvey
  • - B2 provider cannot handle two backups in the same bucket
  • * Fixed bug #1603704 with patch supplied by Maciej Bliziński
  • - Crash with UnicodeEncodeError
  • * Merged in lp:~aaron-whitehouse/duplicity/08-python-futurize-stage-1
  • - Made many of the safer changes for improved Python 3 support (python-future's futurize -stage1)
  • without functional change to the code (and leaving the isinstance(s, types.StringType) tests unchanged).
  • - Created Python 2/3 compatible tests for int and long.
  • - Update setup.py to show only Python 2.7 support.
  • * Merged in lp:~marix/duplicity/azure-storage-0.30.0-plus
  • - This makes the Azure backend compatible with version 0.30.0 and up of the
  • underlying azure-storage package.
  • * Merged in lp:~marix/duplicity/azure-storage-sas
  • - This branch adds support for Shared Access Signature to the Azure backend
  • which allows to run Duplicity with a minimal set of permissions.
  • * Merged in lp:~aaron-whitehouse/duplicity/pep8_test_fixes
  • - Fix PEP-8 testing by moving to using pycodestyle library.
  • - Temporarily add ignores to allow these tests to pass.
  • - Fix E305 PEP8 errors: expected 2 blank lines after class or function definition, found 1.
  • * Merged in lp:~benoit.bertholon/duplicity/duplicity
  • - Fixes bug #1666194 - ProcessCommandLine function called twice fail and arglist argument not used
  • * Fixed variable name change in last merge which broke a bunch of tests
  • - Changed archive_dir_root back to archive_dir
  • * Fixed bug #1367675 - IMAP Backend does not work with Yahoo server
  • - added the split() as needed in 'nums=list[0].strip().split(" ")'
  • - the other fixes mentioned in the bug report comments were already done
  • * Merged in lp:~benoit.bertholon/duplicity/duplicity
  • - Use the globals.archive_dir variable to store only a string
  • in the case of a path, uses globals.archive_dir_path
  • * Merged in p:~aaron-whitehouse/duplicity/pep8_E402_fixes
  • - Fixed PEP8 errors: E402 module level import not at top of file
  • * Fixed bug #1671852 - Code regression caused by revision 1108
  • - change util.uexc() back to bare uexc()
  • * Fixed bug #1668750 - Don't mask backend errors
  • - added exception prints to module import errors
  • * Fixed bug #1680682 with patch supplied from Dave Allan
  • - Only specify --pinentry-mode=loopback when --use-agent is not specified
  • * Fixed man page that had 'cancel' instead of 'loopback' for pinentry mode
  • * Fixed bug #1684312 with suggestion from Wade Rossman
  • - Use shutil.copyfile instead of os.system('cp ...')
  • - Should reduce overhead of os.system() memory usage.
  • * Merged in lp:~dernils/duplicity/testing
  • - Fixed minor stuff in requirements.txt.
  • - Added a Dockerfile for testing.
  • - Minor changes to README files.
  • - Added README-TESTING with some information on testing.
  • * Merged in lp:~dernils/duplicity/documentation
  • - Minor changes to README-REPO, README-TESTING
  • - Also redo the changes to requirements.txt and Dockerfile
  • * Merged in lp:~dawgfoto/duplicity/replicate
  • - Add replicate command to replicate a backup (or backup
  • sets older than a given time) to another backend, leveraging
  • duplicity's backend and compression/encryption infrastructure.
  • * Fixed some incoming PyLint and PEP-8 errors.
  • * Merged in lp:~marix/duplicity/add-azure-arguments
  • - Using the Azure backend to store large amounts of data we found that
  • performance is sub-optimal. The changes on this branch add command line
  • parameters to fine-tune some parameters of the Azure storage library,
  • allowing to push write performance towards Azure above 1 Gb/s for large
  • back-ups. If a user does not provide the parameters the defaults of the
  • Azure storage library will continue to be used.
  • * Replace incoming non-ASCII chars in commandline.py
  • * bzr does not honor perms so fix the perms at the start of the testing and
  • avoid annoying error regarding testing/gnupg having too lenient perms
  • * Merged in lp:~dernils/duplicity/DockerfileConvenience
  • - Added a few tools to the Dockerfile that make life easier
  • * Fixed bug #1320832 with suggestion from Oskar Wycislak
  • - Use chunks instead of reading it all in swiftbackend
  • * Merged in lp:~dernils/duplicity/DockerfileConvenience
  • - Add a few files that are the beginning of further infrastructure based
  • on docker. It contains a Dockerfile for a simple ftp server (used for
  • backend testing) and a setup script that can be used to set up the
  • complete test environment.
  • * Moved Dockerfile for duplicitytest into testinfrastructure/duplicity_test
  • * Moved some things around in testing/infrastructure to clean up
  • * Fixed bug #1689632 with patch from Howard Kaye
  • - On MacOS, the tempfile.TemporaryFile call erroneously raises an
  • IOError exception saying that too many files are open. This causes
  • restores to fail randomly, after thousands of files have been restored.
  • * Fixed bug #1320641 and others regarding lockfile
  • - swap from lockfile to fasteners module
  • - use an fcntl() style lock for process lock of duplicity cache
  • - lockfile will now clear if duplicity is killed or crashes
  • * Merged in lp:~aaron-whitehouse/duplicity/tox_pylint_fixes
  • - Changes needed to run-tests without pylint E0401(import-error) errors
  • * Merged in lp:~xlucas/duplicity/swift-storage-policies
  • - This brings support for Swift storage policies: when using a Swift
  • backend, you can specify the policy containers should be operating on.
  • - This is similar to AWS Cloud Storage classes (ia, rrs, glacier and so on).
  • * Merged in lp:~dernils/duplicity/Dockerfile
  • - Added another backend to the docker test infrastructure, updated the setup
  • for testing and updated the documentation.
  • * Merged in lp:~dernils/duplicity/Dockerfile
  • - Now have subnet name and IP of the subnet for testing as a variable.
  • * May have finally fixed bug #1556553, "Too many open files...".
  • - Applied patch from Howard Kaye, question #631423. The fix is to dup
  • the file descriptor, and then close the file in the deallocator
  • routine in the glue code. Duping the file lets the C code and the Python
  • code each close the file when they are done with it.
  • - Invalidated and removed the fix put in for bug #1320832.
  • - Caveat: long incremental chains will still eat up a large number of file
  • descriptors. It's a very risky practice, so I'm not inclined to fix it.
  • * Revisited bug #670891 with patch from Edgar Soldin
  • - Forced librsync.PatchedFile() to extract file object from TemporaryFile()
  • object when on Windows or Cygwin systems. This allows us to avoid the
  • problem of tmpfile() use which creates temp files in the wrong place.
  • - See discussion at https://bugs.launchpad.net/duplicity/+bug/670891
  • * Fix bug #1672540 with patch from Benoit Nadeau
  • - Rename would fail to move par files when moving across filesystems.
  • - Patch uses shutil.move() to do the rename instead.
  • * Merged in lp:~dernils/duplicity/docker-compose
  • - Test Infrastructure now utilizing docker-compose
  • * Merged in lp:~aaron-whitehouse/duplicity/08-fix-man-verify
  • - Fix description of --verify and --compare-data in the man page. Now
  • clarifies that verify compares the restored files to hashes stored at
  • backup date, while --compare-data compares restored files to files
  • in target_path.
  • * Fixed bug #1265765 with patches from Matthias Larisch and Edgar Soldin
  • - SSH Paramiko backend now uses BufferedFile implementation to enable
  • collecting the entire list of files on the backend.
  • * Copy.com is gone so remove copycombackend.py.
  • * Merged in lp:~xlucas/duplicity/swift-multibackend-bug
  • - Fix a bug when swift backend is used in a multibackend configuration.
  • * Fixed problem in dist/makedist when building on Mac where AppleDouble
  • files were being created in the tarball. See:
  • https://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x
  • * Merged in lp:~dawgfoto/duplicity/replicate
  • - Add integration test for newly added replicate command.
  • - Also see https://code.launchpad.net/~dawgfoto/duplicity/replicate/+merge/322836.
  • * Merged in lp:~xlucas/duplicity/multibackend-prefix-affinity
  • - Support prefix affinity in multibackend.
  • * Merged in lp:~xlucas/duplicity/pca-backend
  • - Add support for OVH Public Cloud Archive backend.
  • * Fixed PEP8 and 2to3 issues.
  • * Patched in lp:~dawgfoto/duplicity/skip_sync_collection_status
  • - collection-status should not sync metadata
  • - up-to-date local metadata is not needed as collection-status is
  • generated from remote file list
  • - syncing metadata might require to download several GBs
  • * Fixed slowness in 'collection-status' by basing the status on the
  • remote system only. The local cache is treated as empty.
  • * Fixed encrypted remote manifest handling to merely put out a non-fatal
  • error message and continue if the private key is not available.
  • * Merged in lp:~mterry/duplicity/giobackend-display-name
  • - giobackend: handle a wider variety of gio backends by making less assumptions;
  • in particular, this fixes the google-drive: backend
  • * Fixed bug #1709047 with suggestion from Gary Hasson
  • - fixed so default was to use original filename
  • * Fixed PEP8 errors in bin/duplicity
  • * Merged in lp:~mterry/duplicity/gio_child_for_display_name
  • - gio: be slightly more correct and get child GFiles based on display name
  • * Fixed bug #1711905 with suggestion from Schneider
  • - log.Warn was invoked with log.warn in webdavbackend.py
  • * Merged in lp:~mterry/duplicity/gpg-tag-versions
  • - Support gpg versions numbers that have tags on them.
  • - This can happen if you build gpg from git trunk (e.g. 2.1.15-beta20). Or if you run
  • against the freedesktop flatpak runtime (e.g. 2.1.14-unknown).
  • * Fixed bug #1394386 with new module megabackend.py from Tomas Vondra
  • - uses megatools from https://megatools.megous.com/ instead of mega.py library
  • which has been deprecated
  • - fixed copyright and PEP8 issues
  • - replaced subprocess.call() with self.subprocess_popen() to standardize
  • * Fixed bug #1538333 Assertion error in manifest.py: assert filecount == ...
  • - Made sure to never pass .part files as true manifest files
  • - Changed assert to log.Error to warn about truncated/corrupt filelist
  • - Added unit test to make sure detection works
  • - Note: while this condition is serious, it will not affect the basic backup and restore
  • functions. Interactive options like --list-files-changed and --file-changed will not
  • work correctly for this backup set, so it is advised to run a full backup as soon as
  • possible after this error occurs.
  • * Fixed bug #1638033 Remove leading slash on --file-to-restore
  • - code already used rstrip('/') so change to just strip('/')
  • * Fixed bug introduced in new megabackend.py where process_commandline()
  • takes a string not a list. Now it takes both.
  • * Updated web page for new megabackend requirements.
  • * Merged in lp:~mterry/duplicity/more-decode-issues
  • - Here's some fixes for another couple UnicodeDecodeErrors.
  • - The duplicity/dup_time.py fixes when a user passes a utf8 date string (or a string with bogus
  • utf8 characters, but they have to really try to do that). This is bug 1334436.
  • - The bin/duplicity change from str(e) to util.uexc(e) fixes bug 1324188.
  • - The rest of the changes (util.exception_traceback and bin/duplicity changes to use it) are to
  • make the printing of exceptions prettier. Without this, if you see a French exception, you see
  • "acceptxe9es" instead of "acceptées".
  • - You can test all of these changes in one simple line:
  • $ LANGUAGE=fr duplicity remove-older-than $'acceptxffées'
  • * Fix backend.py to allow string, list, and tuple types to support megabackend.py.
  • * Fixed bug #1715650 with patch from Mattheww S
  • - Fix to make duplicity attempt a get first, then create, a container
  • in order to support container ACLs.
  • * Fixed bug #1714663 "Volume signed by XXXXXXXXXXXXXXXX, not XXXXXXXX"
  • - Normalized comparison length to min length of compared keys before comparison
  • - Avoids comparing mix of short, long, or fingerprint size keys.
  • * Patched in lp:~mterry/duplicity/rename-dep
  • - Make rename command a dependency for LP build
  • * Fixed bug #1654756 with new b2backend.py module from Vincent Rouille
  • - Faster (big files are uploaded in chunks)
  • - Added upload progress reporting support
  • * Fixed bug #1448094 with patch from Wolfgang Rohdewald
  • - Don't log incremental deletes for chains that have no incrementals
  • * Fixed bug #1724144 "--gpg-options unused with some commands"
  • - Add --gpg-options to get version run command
  • * Fixed bug #1720159 - Cannot allocate memory with large manifest file since 0.7.03
  • - filelist is not read if --file-changed option in collection-status not present
  • - This will keep memory usage lower in non collection-status operations
  • * Fixed bug #1723890 with patch from Killian Lackhove
  • - Fixes error handling in pydrivebackend.py
  • * Fixed bug #1730902 GPG Error Handling
  • - use util.ufn() not str() to handle encoding
  • * Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode'
  • - Replaced call to util.ufn() with call to util.uexc(). Stupid typo!
  • * More fixes for Unicode handling
  • - Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None
  • - Fixed bug #1386373 with suggestion from Eugene Morozov
  • * Merged in lp:~crosser/duplicity/fix-oauth-flow
  • - Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
  • * Merged in lp:~crosser/duplicity/dpbx-fix-file-listing
  • - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1"
  • * Merged in lp:~crosser/duplicity/fix-small-file-upload
  • - Fixed small file upload changes made in Dropbox SDK v7.1
  • * Converted to use pytest instead of unittest (setup.py test is now discouraged)
  • - We use @pytest.mark.nocapture to mark the tests (gpg) that require
  • no capture of file streams (currently 10 tests).
  • - The rest of the tests are run normally
  • * More pytest changes
  • - Use requirements.txt for dependencies
  • - Run unit tests first, then functional
  • - Some general cleanup
  • * Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-uc_name
  • - Replace util.ufn(path.name) with path.uc_name throughout.
  • * Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-fsdecode
  • - Change util.fsdecode to use "replace" instead of "ignore" (matching behaviour of util.ufn)
  • - Replace all uses of ufn with fsdecode
  • - Make backend.tobytes use util.fsencode rather than reimplementing
  • * Reduce dependencies on backend libraries
  • - Moved backend imports into backend class __init__ method
  • - Surrounded imports with try/except to allow better errors
  • - Put all library dependencies in requirements.txt
  • * Merged in lp:~dawgfoto/duplicity/fixup1251
  • - Avoid redundant replication of already present backup sets.
  • - Fixed by adding back BackupSet.__eq__ which was accidentally(?) removed in 1251.
  • * Merged in lp:~dawgfoto/duplicity/fixup1252
  • * only check decryptable remote manifests
  • - fixup of revision 1252 which introduces a non-fatal error message (see #1729796)
  • - for backups the GPG private key and/or it's password are typically not available
  • - also avoid interactive password queries through e.g. gpg agent
  • * Fixed bug #1768954 with patch from Max Hallden
  • - Add AZURE_ENDPOINT_SUFFIX environ variable to allow setting to non-U.S. servers
  • * Fixed bug #x1717935 with suggestion from strainu
  • - Use urllib.quote_plus() to properly quote pathnames passed via URL
  • * Merged in lp:~aaron-whitehouse/duplicity/08-pycodestyle
  • - Tox changes to accommodate new pycodestyle version warnings.
  • Ignored W504 for now and marked as a TODO.
  • Marked W503 as a permanent ignore, as it is prefered to the (mutually exclusive) W504 under PEP8.
  • - Marked various regex strings as raw strings to avoid the new W605 "invalid escape sequence".
  • * Merged in lp:~aaron-whitehouse/duplicity/08-unadorned-strings
  • - Added new script to find unadorned strings (testing/find_unadorned_strings.py python_file)
  • which prints all unadorned strings in a .py file.
  • - Added a new test to test_code.py that checks across all files for unadorned strings and gives
  • an error if any are found (most files are in an ignore list at this stage, but this will allow
  • us to incrementally remove the exceptions as we adorn the strings in each file).
  • - Adorn string literals in test_code.py with u/b
  • * Fixed bug #1780617 Test fail when GnuPG >= 2.2.8
  • - Relevant change in GnuPG 2.2.8: https://dev.gnupg.org/T3981
  • - Added '--ignore-mdc-error' to all gpg calls made.
  • * Merged in lp:~aaron-whitehouse/duplicity/08-adorn-strings
  • - Adorning string literals (normally to make these unicode), in support of a transition to Python 3.
  • See https://blueprints.launchpad.net/duplicity/+spec/adorn-string-literals
  • - Adorn string in duplicity/globmatch.py.
  • - Adorn strings in testing/unit/test_globmatch.py
  • - Adorn strings in selection.py
  • - Adorn strings in functional/test_selection.py and unit/test_selection.py
  • - Remove ignores for these files in test_code.py
  • * Added function to fix unadorned strings (testing/fix_unadorned_strings.py)
  • - Fixes by inserting 'u' before token string
  • - Solves 99.9% of the use cases we have
  • - Fix unadorned strings to unicode in bin/duplicity and bin/rdiffdir
  • - Add import for __future__.print_function to find_unadorned_strings.py
  • * Fixed unadorned strings to unicode in duplicity/backends/*
  • - Some fixup due to shifting indentataion not matching PEP8.
  • * Reverted back to rev 1317 and reimplemented revs 1319 to 1322
  • * Adorned strings in testing/, testing/functional/, and testing/unit
  • * Added AUTHORS file listing all copyright claimants in headers
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - Adorn some duplicity/*.py strings. I've avoided submitting anything that I think might require
  • significant discussion; I think that reviewing will be easier this way. Mostly annotated strings
  • as unicode, except for librsync.py.
  • * Merged in lp:~qsantos/duplicity/fix-unmatched-rule-error
  • - There are actually two commits: the first fixes a very minor detail in the README regarding the
  • Python version that should be used; the second fixes the way exceptions are handled when an
  • incorrect rule is specified, and display the nice error message rather than an obscure stack trace.
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - Adorn some remaining strings
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - Run futurize --stage1, and adjust so that tests still pass.
  • * Fixed but #1797797 with patch from Bas Hulsken
  • - use bytes instead of unicode for '/' in filenames
  • * Merged in lp:~mcuelenaere/duplicity/duplicity
  • - Make sure we don't load files completely into memory when transferring them from/to
  • the remote WebDAV endpoint.
  • * Fixed bug #1798206 and bug #1798504
  • - Made paramiko a global with import during __init__ so it would
  • not be loaded unless needed.
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - First pass at a python 3 port.
  • * Fixed bug #1803896 with patch from slawekbunka
  • - Add __enter__ and __exit__ to B2ProgressListener
  • * Merged in lp:~okrasz/duplicity/duplicity
  • - Add --azure-blob-tier that specifies storage tier
  • (Hot,Cool,Archive) used for uploaded files.
  • * Merged in lp:~vam9/duplicity/0.8-series-s3-kms-support
  • - Added s3 kms server side encryption support with kms-grants support.
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - More python 3 fixes
  • * Merged in lp:~aaron-whitehouse/duplicity/08-uexc-fix
  • - Fix for Bug #1770929 with associated test cases (thanks to Pete Zaitcev (zaitcev)
  • in Bug #1797928 for the head start).
  • * Merged in lp:~aaron-whitehouse/duplicity/08-style-fixes
  • - Fix pylint style issues (over-indented text, whitespace on blank lines etc)
  • - Removed "pylint: disable=bad-string-format-type" comment, which was throwing
  • an error and does not seem to be needed.
  • * Removed last mention of copy.com from man page with help from edso.
  • * Fix bug #1811114 with revised onedrivebackend.py from David Martin
  • - Adapt to new Microsoft Graph API
  • * Merged in lp:~brandon753-ba/duplicity/aws-glacier
  • - Adds support for for a command line option to store data on AWS S3 Glacier.
  • * Manual merge of lp:~yajo/duplicity/duplicity
  • - Support partial metadata sync.
  • - Fixes bug #1823858 by letting the user to choose partial syncing. Only the metadata for the target chain
  • will be downloaded. If older (or newer) chains are encrypted with a different passphrase, the user will
  • be able to restore to a given time by supplying only the passphrase for the chain selected by
  • the `--restore-time` option when using this new option.
  • - A side effect is that using this flag reduces dramatically the sync time when moving files from one to
  • another location, in cases where big amounts of chains are found.
  • * Merged in lp:~mgorse/duplicity/0.8-series
  • - Python 3 fixes to imapbackend.py
  • - Fix bug 1828869: refresh CollectionsStatus after sync
  • * Fixed bug #1828662 with patch from Bas Hulsken
  • - string.split() had been deprecated in 2, removed in 3.7
  • * Some more work on unadorned strings
  • - Fixed test_unadorned_string_literals to list all strings found
  • - Added bin/duplicity and bin/rdiffdir to list of files tested
  • - All unadorned strings have now been adorned
  • * Fix TestGlobToRegex.test_glob_to_regex for py3.6 and above
  • - see https://bugs.python.org/issue29995 for details
  • * Merged in lp:~stragerneds/duplicity/duplicity
  • - improve test backup speed
  • - insure all test output is read

New in Duplicity 0.7.19 (Apr 30, 2019)

  • Fixed bug #1798206 and bug #1798504
  • Made paramiko a global with import during __init__ so it would not be loaded unless needed.
  • Merged in lp:~mterry/duplicity/pydrive-root-0.7
  • Just a tiny fix to clean up the temporary file we create to find the root ID. It's a little surprising for the user if they wind up with this file called "i_am_in_root" that they don't know where it came from. Almost sounds like they were hacked.
  • Merged in lp:~yajo/duplicity/duplicity
  • Support partial metadata sync.
  • Fixes bug #1823858 by letting the user to choose partial syncing. Only the metadata for the target chain will be downloaded. If older (or newer) chains are encrypted with a different passphrase, the user will be able to restore to a given time by supplying only the passphrase for the chain selected by the `--restore-time` option when using this new option.
  • A side effect is that using this flag reduces dramatically the sync time when moving files from one to another location, in cases where big amounts of chains are found.

New in Duplicity 0.7.18.2 (Oct 18, 2018)

  • Fixed bug #1788558 again
  • If we get None for size skip check.

New in Duplicity 0.7.18.1 (Aug 28, 2018)

  • Fixed bug #1788558 - Treat None as zero when printing log.
  • Revert fix for bug #1788599 - Was causing problems with directory names

New in Duplicity 0.7.18 (Aug 22, 2018)

  • Fixed bug #1756550 Online html man page is showing a 0 byte file
  • Partial fix of bug #1734144 with patch from Joris van Eijden. Note: this is really just a partial fix for now, since it only covers the case where the local size does not yet match the remote size. A case where -1 is the returned length is not fixed.
  • Number of retries is now same as globals.num_retries.
  • Added standoff delay of 0.5 sec per attempt.
  • Fixed bug #1764432 with patch from Robke Geenen. Just join the parts together.
  • Fixed bug #1717935 with suggestion from strainu. Use urllib.quote_plus() to properly quote pathnames passed via URL
  • Fixed bug #1780617 Test fail when GnuPG >= 2.2.8. Relevant change in GnuPG 2.2.8: https://dev.gnupg.org/T3981. Added '--ignore-mdc-error' to all gpg calls made.
  • Fixed bug #1785520 with patch from Chris Hunt. Fix for B2 version 1.3.4 just released
  • Fix a 2to3 error in ssh_paramiko_backend.py

New in Duplicity 0.7.17 (Feb 28, 2018)

  • Removed changes made in bug #1044715 Provide a file history feature:
  • Changes required too much memory to carry in the manifest
  • The option --file-changed in collection-status is now invalid
  • This will close bugs: #1730451, #896728, #1526557, #1550176
  • Starting a full backup will be needed to fully utilize this fix
  • Fix update of Launchpad Translations. Translations were not being picked up on a daily basis and we got several months behind.

New in Duplicity 0.7.16 (Jan 13, 2018)

  • Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode'
  • Replaced call to util.ufn() with call to util.uexc(). Stupid typo!
  • More fixes for Unicode handling
  • Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None
  • Fixed bug #1386373 with suggestion from Eugene Morozov
  • Patched in lp:~crosser/duplicity/fix-oauth-flow
  • Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
  • Patched in lp:~crosser/duplicity/dpbx-fix-file-listing
  • Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1"
  • Patched in lp:~crosser/duplicity/fix-small-file-upload
  • Fixed small file upload changes made in Dropbox SDK v7.1
  • Fix pylint error in webdavbackend.py

New in Duplicity 0.7.15 (Nov 21, 2017)

  • Fixed bug introduced in new megabackend.py where process_commandline()
  • takes a string not a list. Now it takes both.
  • * Updated web page for new megabackend requirements.
  • * Patched in lp:~mterry/duplicity/more-decode-issues
  • - Here's some fixes for another couple UnicodeDecodeErrors.
  • - The duplicity/dup_time.py fixes when a user passes a utf8 date string (or a string with bogus
  • utf8 characters, but they have to really try to do that). This is bug 1334436.
  • - The bin/duplicity change from str(e) to util.uexc(e) fixes bug 1324188.
  • - The rest of the changes (util.exception_traceback and bin/duplicity changes to use it) are to
  • make the printing of exceptions prettier. Without this, if you see a French exception, you see
  • "acceptxe9es" instead of "acceptées".
  • - You can test all of these changes in one simple line:
  • $ LANGUAGE=fr duplicity remove-older-than $'acceptxffées'
  • * Fix backend.py to allow string, list, and tuple types to support megabackend.py.
  • * Fixed bug #1715650 with patch from Mattheww S
  • - Fix to make duplicity attempt a get first, then create, a container
  • in order to support container ACLs.
  • * Fixed bug #1714663 "Volume signed by XXXXXXXXXXXXXXXX, not XXXXXXXX"
  • - Normalized comparison length to min length of compared keys before comparison
  • - Avoids comparing mix of short, long, or fingerprint size keys.
  • * Merged in lp:~mterry/duplicity/rename-dep
  • - Make rename command a dependency for LP build
  • * Fixed bug #1654756 with new b2backend.py module from Vincent Rouille
  • - Faster (big files are uploaded in chunks)
  • - Added upload progress reporting support
  • * Fixed bug #1448094 with patch from Tomáš Zvala
  • - Don't log incremental deletes for chains that have no incrementals
  • * Fixed bug #1724144 "--gpg-options unused with some commands"
  • - Add --gpg-options to get version run command
  • * Fixed bug #1720159 - Cannot allocate memory with large manifest file since 0.7.03
  • - filelist is not read if --file-changed option in collection-status not present
  • - This will keep memory usage lower in non collection-status operations
  • * Fixed bug #1723890 with patch from Killian Lackhove
  • - Fixes error handling in pydrivebackend.py
  • * Fixed bug #1730902 GPG Error Handling
  • - use util.ufn() not str() to handle encoding

New in Duplicity 0.7.14 (Sep 4, 2017)

  • Merged in lp:~dawgfoto/duplicity/skip_sync_collection_status
  • collection-status should not sync metadata
  • up-to-date local metadata is not needed as collection-status is generated from remote file list
  • syncing metadata might require to download several GBs
  • Fixed slowness in 'collection-status' by basing the status on the remote system only. The local cache is treated as empty.
  • Fixed encrypted remote manifest handling to merely put out a non-fatal error message and continue if the private key is not available.
  • Patched in lp:~mterry/duplicity/giobackend-display-name
  • giobackend: handle a wider variety of gio backends by making less assumptions; in particular, this fixes the google-drive: backend
  • Fixed bug #1709047 with suggestion from Gary Hasson
  • fixed so default was to use original filename
  • Fixed PEP8 errors in bin/duplicity
  • Merged in lp:~mterry/duplicity/gio_child_for_display_name_0.7
  • gio: be slightly more correct and get child GFiles based on display name
  • Fixed bug #1711905 with suggestion from Schneider
  • log.Warn was invoked with log.warn in webdavbackend.py
  • Merged in lp:~mterry/duplicity/gpg-tag-versions
  • Support gpg versions numbers that have tags on them.
  • This can happen if you build gpg from git trunk (e.g. 2.1.15-beta20). Or if you run against the freedesktop flatpak runtime (e.g. 2.1.14-unknown).
  • Fixed bug #1394386 with new module megabackend.py from Tomas Vondra
  • uses megatools from https://megatools.megous.com/ instead of mega.py library which has been deprecated
  • fixed copyright and PEP8 issues
  • replaced subprocess.call() with self.subprocess_popen() to standardize
  • Fixed bug #1713640 with patch from Aleksandar Ivanisevic
  • replace 2.7 syntax with 2.6 equivalent
  • Fixed bug #1538333 Assertion error in manifest.py: assert filecount == ...
  • Made sure to never pass .part files as true manifest files
  • Changed assert to log.Error to warn about truncated/corrupt filelist
  • Added unit test to make sure detection works
  • Note: while this condition is serious, it will not affect the basic backup and restore functions. Interactive options like --list-files-changed and --file-changed will not work correctly for this backup set, so it is advised to run a full backup as soon as possible after this error occurs.
  • Fixed bug #1638033 Remove leading slash on --file-to-restore
  • code already used rstrip('/') so change to just strip('/')

New in Duplicity 0.7.13.1 (Jun 18, 2017)

  • Fixed problem in dist/makedist when building on Mac where AppleDouble files were being created in the tarball.

New in Duplicity 0.7.13 (Jun 14, 2017)

  • Fixed bug #1680682 with patch supplied from Dave Allan
  • Only specify --pinentry-mode=loopback when --use-agent is not specified
  • Fixed man page that had 'cancel' instead of 'loopback' for pinentry mode
  • Fixed bug #1684312 with suggestion from Wade Rossman
  • Use shutil.copyfile instead of os.system('cp ...')
  • Should reduce overhead of os.system() memory usage.
  • Fixed bug #1320832 with suggestion from Oskar Wycislak
  • Use chunks instead of reading it all in swiftbackend
  • Fixed bug #1689632 with patch from Howard Kaye
  • On MacOS, the tempfile.TemporaryFile call erroneously raises an
  • IOError exception saying that too many files are open. This causes
  • restores to fail randomly, after thousands of files have been restored.
  • Fixed bug #1320641 and others regarding lockfile
  • swap from lockfile to fasteners module
  • use an fcntl() style lock for process lock of duplicity cache
  • lockfile will now clear if duplicity is killed or crashes
  • May have finally fixed bug #1556553, "Too many open files...".
  • Applied patch from Howard Kaye, question #631423. The fix is to dup
  • the file descriptor, and then close the file in the deallocator
  • routine in the glue code. Duping the file lets the C code and the Python
  • code each close the file when they are done with it.
  • Invalidated and removed the fix put in for bug #1320832.
  • Caveat: long incremental chains will still eat up a large number of file
  • descriptors. It's a very risky practice, so I'm not inclined to fix it.
  • Revisited bug #670891 with patch from Edgar Soldin
  • Forced librsync.PatchedFile() to extract file object from TemporaryFile()
  • object when on Windows or Cygwin systems. This allows us to avoid the
  • problem of tmpfile() use which creates temp files in the wrong place.
  • See discussion at https://bugs.launchpad.net/duplicity/+bug/670891
  • Fix bug #1672540 with patch from Benoit Nadeau
  • Rename would fail to move par files when moving across filesystems.
  • Patch uses shutil.move() to do the rename instead.
  • Fixed bug #1265765 with patches from Matthias Larisch and Edgar Soldin
  • SSH Paramiko backend now uses BufferedFile implementation to enable
  • collecting the entire list of files on the backend.
  • Copy.com is gone so remove copycombackend.py.
  • Merged in lp:~xlucas/duplicity/swift-multibackend-bug
  • Fix a bug when swift backend is used in a multibackend configuration.
  • Merged in lp:~duplicity-team/duplicity/po-updates

New in Duplicity 0.7.12 (Mar 27, 2017)

  • Fixed bug #1623342 with patch supplied by Daniel Jakots
  • - Failing test on OpenBSD because tar/gtar not found
  • Fixed bug #1654220 with patch supplied by Kenneth Newwood
  • - Duplicity fails on MacOS because GPG version parsing fails
  • Fixed bug #1655268 "--gpg-binary option not working"
  • - If gpg binary is specified rebuild gpg profile using new binary location
  • Fixed bug #1658283 "Duplicity 0.7.11 broken with GnuPG 2.0"
  • - Made gpg version check more robust than just major version
  • - Now use --pinentry-mode=loopback on gpg 2.1 and greater
  • - Removed check for non-Linux systems, a false problem
  • Merged in lp:~matthew-t-bentley/duplicity/duplicity
  • - Sets a user agent. Backblaze asked for this in case there are errors that originate from the Duplicity B2 backend
  • - Only retrieves a new upload URL when the current one expires, to bring it in line with their best practices for integrations: https://www.backblaze.com/b2/docs/integration_checklist.html
  • Add detail about import exceptions in onedrivebackend.py
  • Fixed bug #1657916 with patch supplied by Daniel Harvey
  • - B2 provider cannot handle two backups in the same bucket
  • Fixed bug #1603704 with patch supplied by Maciej Bliziński
  • - Crash with UnicodeEncodeError
  • Some fixes to gpg.py to handle gpg1 & gpg2 & gpg2.1 commandline issues
  • - --gpg-agent is optional on gpg1, but on gpg2 it is used automatically
  • - --pinentry-mode is not a valid opt until gpg2.1, so condition on that
  • Fixed bug #1367675 - IMAP Backend does not work with Yahoo server
  • - added the split() as needed in 'nums=list[0].strip().split(" ")'
  • - the other fixes mentioned in the bug report comments were already done
  • Fixed bug #1671852 - Code regression caused by revision 1108
  • - change util.uexc() back to bare uexc()
  • Fixed bug #1668750 - Don't mask backend errors
  • - added exception prints to module import errors

New in Duplicity 0.7.11 (Dec 31, 2016)

  • Fixed bugs #815510 and #1615480
  • Changed default --volsize to 200MB
  • Merged in lp:~mstoll-de/duplicity/duplicity
  • Backblaze announced a new domain for the b2 api
  • Merged in lp:~aaron-whitehouse/duplicity/bug_1620085_exclude-if-present-locked-folder
  • Fixes Bug #1620085: --exclude-if-present gives OSError looking for tag in locked folders
  • Fixed bug #1623342 with patch from Daniel Jakots
  • failing test on OpenBSD because tar/gtar not found
  • Merged in lp:~mwilck/duplicity/duplicity
  • GPG: enable truly non-interactive operation with gpg2
  • This patch fixes the IMO unexpected behavior that, when using GnuPG2, a pass phrase dialog always pops up for saving backups. This is particularly annoying when trying to do unattended / fully automatic backups.
  • Fixed bug #1621194 with code from Tornhoof
  • Do backup to google drive working without a service account
  • Fixed bug #1642098does not create PAR2 archives when '--par2-options' is used
  • Missing space between par2-options plus default options
  • Fix bug using 40-char sign keys, from Richard McGraw on mail list
  • Remove truncation of argument and adjust comments
  • Merged in lp:~dernils/duplicity/robust-dropbox-backend
  • Added new command line option --backend-retry-delay that allows to determine the time that duplicity sleeps before retrying after an error has occured.
  • Added some robustness to dpbxbackend.py that ensures re-authentication happens in case that a socket is changed (e.g. due to a forced reconnectof a dynamic internet connection).
  • Merged in lp:~ed.so/duplicity/manpage.fixes
  • Fix html output via rman on the website
  • Merged in lp:~horgh/duplicity/copy-symlink-targets-721599
  • Add --copy-links to copy symlink contents, not just the link itself.
  • Merged in lp:~aaron-whitehouse/duplicity/Bug_1624725_files_within_folder_slash
  • Fixed Bug #1624725, so that an include glob ending in "/" now includes folder contents (for globs with and without special characters). This preserves the behaviour that an expression ending in "/" only matches a folder, but now the contents of any matching folder is included.
  • Fix problem with gpg2 in yakety and zesty
  • Fix Bug #1642813 with patch from Ravi
  • If stat() returns None, don't attempt to set perms.
  • Merged in lp:~breunigs/duplicity/amazondrive3
  • As reported on the mailinglist, if a space is entered while duplicity asks for the URL, it fails. Since all important spaces are URL encoded anyway, this should be fine even if there are spaces in the URL at all. I also patched it in the onedrive backend, because it must have similar issues.
  • Prep for 0.7.11

New in Duplicity 0.7.10 (Aug 29, 2016)

  • Speedup of path_matches_glob() by about 8x.
  • Remove -w from setsid in functional tests.
  • Fixed conflict in merge from Martin Wilck and applied merge fixes setsid usage in functional testing.
  • Fixed bug #1612472 with patch from David Cuthbert
  • Restore from S3 fails with --with-prefix-archive if prefix includes '/'
  • Merged in lp:~arashad.ahamad/duplicity/duplicity_latest Changes for connecting to IBM Bluemix ObjectStorage.
  • Merged in lp:~fenisilius/duplicity/acd_init_mkdir. Allow duplicity to create remote folder

New in Duplicity 0.7.09 (Jul 25, 2016)

  • Fixed bug #1600692 with patch from Wolfgang Rohdewald
  • Allow symlink to have optional trailing slash during verify.
  • Merged in lp:~aaron-whitehouse/duplicity/07-fix_deja_dup_error_on_locked_files
  • Revert log.Error to log.Warn, as it was prior to the merge in rev 1224, as this was affecting other applications (e.g. deja dup; Bug #1605939).
  • Merged in lp:~duplicity-team/duplicity/po-updates

New in Duplicity 0.7.08 (Jul 2, 2016)

  • Merged in lp:~noizyland/duplicity/fix_azurebackend_typo
  • Fix typo in error handling code
  • Merged in lp:~ghoz/duplicity/swift-prefix:
  • adds the abiliy to use path in the swift backend, in order to have multiple
  • backups to the same container neatly organized.
  • Fixed bug #1573957 with patches from Dmitry Nezhevenko:
  • upload last chunk with files_upload_session_finish to avoid extra request
  • upload small files using non-chunked api
  • Fixed bug #1586934 with patches from Dmitry Nezhevenko:
  • fixes error handling in wrapper
  • Fixed bug #1586992 with patches from Dmitry Nezhevenko:
  • Patch adds _delete_list to Par2Backend. And _delete_list fallbacks to
  • _delete calls if wrapped backend has no _delete_list.
  • Fixed bug #1589038 with patches from Malte Schröder
  • Added ignore_case option to selection functions:
  • Merged in lp:~mstoll-de/duplicity/b2-reauth:
  • Fixes bug #1588503 b2: large uploads fail due to expired auth token
  • Merged in lp:~aaron-whitehouse/duplicity/fix_pep8:
  • Fix PEP8 error in onedrivebackend.py (space before bracket)
  • Fixed bug #822697 ssh-options not passed in rsync over ssh:
  • Added globals.ssh_options to rsync command line
  • Increased default volume size to 200M, was 25M:
  • Fixed README-REPO to no longer mention 0.6-series:
  • Merged in lp:~aaron-whitehouse/duplicity/fix_stat_errors:
  • Only give an error about not being able to access possibly locked file if
  • that file is supposed to be included or scanned (i.e. not excluded).
  • Fixes Bug #1089131
  • Fixed bug #1594780 with patches from B. Reitsma:
  • Use re.finditer() to speed processing
  • Merged in lp:~aaron-whitehouse/duplicity/PEP8_W503_fixes:
  • Fix PEP8 W503 errors (line break before binary operator) and enable the
  • PEP8 test for this in test_code.CodeTest.
  • Merged in lp:~aaron-whitehouse/duplicity/PEP8_line_length:
  • Set line length error length to 120 (matching tox.ini) for PEP8 and
  • fixed E501(line too long) errors.
  • Merged in lp:~duplicity-team/duplicity/po-updates

New in Duplicity 0.7.07.1 (Apr 19, 2016)

  • Fixed bug #1568677 duplicity fails to use existing S3 bucket in boto backend
  • bug introduced by incomplete fix of bug #1296793
  • simplified setting of bucket locations
  • Fixed bug #1569523 get_bucket unknown keyword location and my_location name error
  • bug introduced in improper fix of bug #1568677
  • gotta love those inconsistent APIs
  • Fixed bug #1571134 incompatible with python-oauth2client version 2.x and #1558155 PyDrive backend broken, needs update to oauth2client library
  • used patch from https://bugs.debian.org/820725 but made changes to allow the user to continue using the old version
  • Fixed bug #1570293 duplicity is very slow due to excessive fsync
  • removed flush() after write.
  • revert to previous version

New in Duplicity 0.7.07 (Apr 10, 2016)

  • Merged in lp:~matthew-t-bentley/duplicity/b2
  • Fix import and error typos.
  • Allow multiple backups in the same bucket.
  • Fixes bug #1523498.
  • A couple fixes allowing multiple backups to be hosted in different folders in the same bucket as well as some logging for -v9.
  • Random stuff:
  • remove RPM stuff from makedist
  • have makedist pull directly from VCS, not local dir
  • update po translation directory and build process
  • clean up some odd error messages
  • move Pep8 ignores to tox.ini
  • supply correct path for pydevd under Mac
  • fix some tests to run under Linux and Mac
  • Partial fix for bug #1529606 shell code injection in lftpbackend
  • still need to fix the other backends that spawn shell commands
  • Make test_restart compatible with both GNUtar and BSDtar
  • Fix stupid issue with functional test path for duplicity
  • Applied patch from shaochun to fix bug #1531154,
  • --file-changed failed when file contains spaces
  • Applied patch from abeverly to fix bug #1475890
  • allow port to be specified along with hostname on S3
  • adjusted help text and man page to reflect the change
  • Undo changes to test_restart.py. GNU tar is needed.
  • Fix minor pep8 nit in collections.py
  • Applied changes from ralle-ubuntu to fix bug 1072130.
  • duplicity does not support ftpes://
  • Fixed bug #1296793 Failed to create bucket
  • use S3Connection.lookup() to check bucket exists
  • skips Boto's Exception processing for this check
  • dupe of bug #1507109 and bug #1537185
  • Merged in lp:~mifchip/duplicity/duplicity
  • fix bug #1313964, absolute path doesn't work for FTP
  • Merged in lp:~fpytloun/duplicity/webdav-gssapi
  • support GSSAPI authentication in webdav backend
  • Add more pylint ignore warnings tags
  • Adjust so test_restart.py can run on Mac as well
  • Fix for bug #1538333 assert filecount == len(self.files_changed)
  • added flush after every write for all FileobjHooked files which should prevent some errors when duplicity is forcibly closed.
  • Fix bug #1540279 mistake in --help
  • Applied patch from kay-diam to fix error handling in ssh pexpect, fixes bug #1541314
  • Fixed a patching error in ssh_pexpect_backend.py
  • Merged in lp:~fpytloun/duplicity/webdav-gssapi-fix
  • Make kerberos optional for webdav backend
  • Merged in lp:~harningt/duplicity/multibackend-mirror
  • This changeset addresses multibackend handling to permit a mirroring option in addition to its "stripe" mode to make it a redundancy tool vs space-expansion tool. To do this without changing the configuration too much, I used the query string that would generally go unused for files to specify behavior that applies to all items inside the configuration file.
  • Added acdclibackend.py from Stefan Breunig and Malay Shah
  • renamed from amazoncloudbackend to stress use of acd_cli
  • Fixed some 2to3 and Pep8 issues that had crept in
  • Backed out changes made by patching for bug #1541314. These patches should not have been applied to the 0.7 series.
  • Merged in lp:~rye/duplicity/mediafire
  • Backend for https://www.mediafire.com
  • Requires https://pypi.python.org/pypi/mediafire/ installed.
  • Reverted changes made in rev 1164 w.r.t. getting the source from VCS rather than local directory. Fixes bug #1548080.
  • More fixes to dist/makedist to make it more OS agnostic.
  • Merged in lp:~ed.so/duplicity/webdav.lftp.ssl-overhaul duplicity.1, commandline.py, globals.py added --ssl-cacert-path parameter backend.py make sure url path component is properly url decoded, in case it contains special chars (eg. @ or space) lftpbackend.py quote _all_ cmd line params added missing lftp+ftpes protocol fix empty list result when chdir failed silently added ssl_cacert_path support webdavbackend.py add ssl default context support for python 2.7.9+ (using system certs eg. in /etc/ssl/certs) added ssl_cacert_path support for python 2.7.9+ gettext wrapped all log messages minor refinements
  • Applied patch from Dmitry Nezhevenko to upgrade dropbox backend:
  • update to SDK v2
  • use chunked upload
  • Merged in lp:~aaron-whitehouse/duplicity/improve_present_get_sf_man_page
  • Improve man page entry for --exclude-if-present
  • Merged in lp:~aaron-whitehouse/duplicity/split_glob_matching_from_select
  • Move glob matching code out of selection.py's Select function and into globmatch.py.
  • Fix bug reported on the mailing list from Mark Grandi (assertion error while backing up). In file_naming.parse() the filename was being lower cased prior to parsing. If you had used a prefix with mixed case, we were writing the file properly, but could not find it in the backend.
  • Merged in lp:~duplicity-team/duplicity/po-updates

New in Duplicity 0.7.06 (Dec 8, 2015)

  • Merged in lp:~mnjul/duplicity/s3-infreq-access
  • This adds support for AWS S3's newly announced Infrequent Access storage class and is intended to implement Blueprint: https://blueprints.launchpad.net/duplicity/+spec/aws-s3-std-ia-class .
  • A new command line option, --s3-use-ia, is added, and boto backend will automatically use the correct storage class value depending on whether --s3-use-rrs and --s3-use-ia is set. Command line parser will prompt error if both --s3-use-ia and --s3-use-rrs are used together, as they conflict with each other.
  • The manpage has been updated giving a short explanation on the new option. Its wording derives from Amazon's official announcement: https://aws.amazon.com/about-aws/whats-new/2015/09/announcing-new-\ amazon-s3-storage-class-and-lower-glacier-prices/
  • The ptyprocess module no longer supports Python 2.6, so fix tox.ini to use an older version. Make explicit environs for all tests.
  • Upgrade to newest version of pep8 and pylint. Add three ignores to test_pep8 and one to test_pylint to get the rest to pass. They
  • Applied patch from Alexander Zangerl to update to changes in lockfile API 0.9 and later. Updated README to notify users.
  • Modded tox.ini to use the latest lockfile.
  • Merged in lp:~ed.so/duplicity/setup.shebang
  • Having the python interpreter searched in the PATH is much more flexible than the /usr/bin/python inserted into our scripts shebang by setuptools. This patch prevents that. don't touch my shebang!
  • Cleanup issues around Launchpad build, mainly lockfile >= 0.9.
  • Merged in lp:~michal-s/duplicity/duplicity
  • WindowsAzureMissingResourceError and WindowsAzureConflictError changed due to SDK changes. are all valid in our case.
  • Reversed previous changes to lockfile. Now it will take any version extant in the LP build repository. (PyPi is not avail in LP build).
  • Merged in lp:~ed.so/duplicity/tempfile.tempdir
  • make sure packages using python's tempfile create temp files in duplicity's temp dir
  • Fixed bug #1511308 - Cannot restore no-encryption, no-compression backup
  • Corrected code to include plain file in write_multivolume()
  • Added PlainWriteFile() to gpg.py
  • Merged in lp:~michal-s/duplicity/duplicity
  • Fix azurebackend storage class import
  • Merged in lp:~feraudet/duplicity/fix
  • Fix missing SWIFT_ENDPOINT_TYPE env var, bug 1519694.
  • Fix bug #1520691 - Shell Code Injection in hsi backend
  • Replace use of os.popen3() with subprocess equivalent.
  • Added code to expand relative program path to full path.
  • Fix hisbackend where it expected a list not a string.
  • Merged in lp:~noizyland/duplicity/azurebackend-fixes
  • Support new version of Azure Storage SDK
  • Refactor _list method to support containers with >5000 blobs
  • Merged in lp:~matthew-t-bentley/duplicity/b2
  • Adds a backed for BackBlaze's (currently beta) B2 backup service.
  • This adds backends/b2backend.py, modifies log.py to add an error code and modifies commandline.py to add the b2:// example to the help text.

New in Duplicity 0.7.05 (Sep 15, 2015)

  • Change use of mock.patch in unit tests to accommodate the obsolete version of python-mock on the build server.
  • Fixed Bug 1476019 S3 storage bucket not being automatically created with patch from abeverley
  • Add tox testing profile that mimics the packages installed on the Launchpad build server, to reduce the likelihood of tests passing our test suite, but failing on the build server (e.g. because of the out-of-date mock version).
  • Set RUN_CODE_TESTS to 0 for lpbuildd tox profile, reflecting its value on the Launchpad build server (and therefore skipping PEP8, 2to3 and pylint). More accurately reflects the system we are mimicking and saves approximately 1 minute per test run.
  • Fixed Bug 1438170 duplicity crashes on resume when using gpg-agent with patch from Artur Bodera (abodera). Applied the same patch to incremental resumes as well.
  • This little patch logs debug messages concerning path selection process, and so allows users to debug their include/exclude configuration.
  • After reorganisation in revision 981 and the fix for bug #1406173 the par2backend does not remove .par2 files anymore when removing duplicity-*.gpg files.
  • This banch adds an unfiltered_list() method which is used in delete() and delete_list()
  • Updated man pages to reflect more contributors.
  • Fix bug #1493573. Correct option typo in man page.
  • Fix bug #1494228 CygWin: TypeError: basis_file must be a (true) file. The problem that caused the change to tempfile.TemporaryFile was due to the fact that os.tmpfile always creates its file in the system temp directory, not in the directory specified. The fix applied was to use os.tmpfile in cygwin/windows and tempfile.TemporaryFile in all the rest. This means that cygwin is now broken with respect to temp file placement of this one file (deleted automatically on close).
  • This fixes the issue a number of users (including myself) have been having with duplicity creating files with duplicate filenames on Google Drive. It keeps a runtime cache of filename to object ID mappings, so that once it has uploaded an object it won't be fooled by weakly consistent directory listings.

New in Duplicity 0.7.04 (Aug 3, 2015)

  • Merged in lp:~noizyland/duplicity/fix-progress
  •   - Fixes bug 1264744. selection.filelist_globbing_get_sfs leaves the filelist file object's position at the end of the file. When the --progress option is used the filelists need to be read twice. On the second read nothing is read from the file because file has already been read and the position is EOF. This patch calls seek(0) on the filelist to reset the position to BOF so that subsequent read() calls will return data.
  • Added pylint ignore error in webdavbackend.py.
  • Merged in lp:~bmerry/duplicity/pydrive-regular
  •   - This implements the proposal made by somebody else (http://lists.gnu.org/archive/html/duplicity-talk/2015-02/msg00037.html) to allow the pydrive backend to work with a normal drive account instead of a service account. It seems to be working for me: I was able to migrate seamlessly from the gdocs backend. It's set up so that a service account can still be used, depending on which environment variable is set. The man page is updated to describe how to use the new functionality.
  • Merged in lp:~ed.so/duplicity/gdocs.pydrive
  •   - make pydrive new gdocs default backend
  •   - keep gdata backend as gdata+gdocs://
  • Merged in lp:~raymii/duplicity/fix-swiftbackend-max-10000-files-in-list
  •   - Swiftclient by default returns at max 10000 files. By adding full_listing=True we make sure all objects are returned. Ref: https://lists.nongnu.org/archive/html/duplicity-talk/2015-05/msg00060.html and http://docs.openstack.org/developer/python-swiftclient/swiftclient.html#swiftclient.client.get_container
  • Fix a couple of PEP8 glitches.
  • Fixed bug 791794 - description of --gpg-options is misleading, Simply
  •   needed to add the '--' before the options as in "--opt1 --opt2=parm".
  • Fixed bug 1465335 - pydrive still use files in trash can - with patch
  •   from Kuang-che Wu to ignore trashed files.
  • Fixed bug 1452263 - par2 option not working on small processors - with patch
  •   from Kuang-che Wu to ignore default 30 second timeout.
  • Fixed bug 1466160 - pydrive backend is slow to remove old backup set - with
  •   patch from Kuang-che Wu to implement _delete_list().
  • Fixed bug 1466582 - reduce unnecessary syscall with --exclude-if-present - with
  •   patch from Kuang-che Wu to make sure resulting path is a directory.
  • Merged in lp:~ed.so/duplicity/gpg.binary
  •   - new parameter --gpg-binary allows user to point to a different gpg binary, not necessarily in path
  • Merged in lp:~aaron-whitehouse/duplicity/fix_POTFILES.in_and_run-tests
  •   - Fixed two filename references in po/POTFILES.in, a mistake which crept in in rev 1093 and caused testing/run-tests to fail with "IndexError: list index out of range".
  • Merged in lp:~aaron-whitehouse/duplicity/reactivate_progress_test
  •   - Re-enable the test of the --progress option (test_exclude_filelist_progress_option), which was marked as an expected failure. The issue causing this test to fail was fixed in revision 1095 and the test now passes.
  • Fixed bug 1471348 Multi back-end doesn't work with hubiC
  •   - added init of appropriate superclass in both cases.
  • Fixed bug 1471348 Multi back-end doesn't work with hubiC (again)
  •   - hubiC should reach up to duplicity.backend.__init__
  • Merged in lp:~aaron-whitehouse/duplicity/bug_884371
  •   - Fixed Bug #884371 - Stopped an exclude glob trumping an earlier scan glob, but also ensured that an exclude glob is not trumped by a later include. This fix is important, as without it files that are specified to be included are not being backed up as expected.
  •   - Fixed Bug #932482 - a trailing slash at the end of globs no longer prevents them working as expected.
  • Merged in lp:~aaron-whitehouse/duplicity/reenable_tests
  •   - Re-enable unit.test_selection tests that had been temporarily commented out.
  • Merged in lp:~aaron-whitehouse/duplicity/trailing_slash_match_dirs
  •   - Made globs with trailing slashes only match directories, not files, fixing Bug #1479545.
  • Merged in lp:~aaron-whitehouse/duplicity/improve_tox_and_python2-6_testing
  •   - Testing improvements, particularly in relation to testing against Python version 2.6: tox.ini fixed so that it is possible to run individual tests against both Python 2.6 and 2.7; updated test_code.py to use unittest2 for Python versions < 2.7 (instead of failing); ./run-tests now correctly runs all tests against both Python 2.6 and 2.7; and improved testing directions in README-REPO.
  • Merged in lp:~dag-stenstad/duplicity/swift_authversion_3_support
  •   - Added support for Openstack Identity v3 in the Swift backend.
  • Merged in lp:~aaron-whitehouse/duplicity/fix_2to3_issues
  •   - Fixed 2to3 issues. Updated README-REPO with more test information. Updated pylint and test_diff2 descriptions to make it clear these require packages to be installed on the sytem to pass. All tests pass on Python 2.6 and Python 2.7 as at this revision.

New in Duplicity 0.6.23 (Jan 25, 2014)

  • Enhancements:
  • Applied patch from bug 1216921 to fix ignore_missing().
  • merged lp:~mterry/duplicity/ignore-missing to fix patch.
  • Merged in lp:~mterry/duplicity/catch-seq-copy-error
  • Anyexception when running patch_seq2ropath should be ignored (though logged) and duplicity should move on. This covers the two asserts in that function (bug 1155345 and bug 720525) as well as errors that happen during file copying (bug 662442).
  • Merged in lp:~mterry/duplicity/argv
  • Fix use of argv when calling os.execve
  • Merged in lp:~verb/duplicity/bucket_root_fix
  • Fix bug that prevents backing up to the root of a bucket with boto backend.
  • Merged in lp:~gliptak/duplicity/415619
  • Better error message when chown fails
  • Merged in lp:~mterry/duplicity/log-path-type
  • Any backup browser built on top of duplicity will need to indicate which files in the backup are folders and which are files. The current logging information doesn't provide this detail. So I've added a field to the log.InfoCode.file_list output that includes the path type.
  • Merged in lp:~mterry/duplicity/manifest-oddities
  • We may accidentally end up with an oddly inconsistent manifest like so: Volume 1 Volume 2 Volume 3 Volume 2 As did get reported recently on the mailing list: http://lists.nongnu.org/archive/html/duplicity-talk/2013-11/msg00009.html
  • One way this can happen (the only way?) is if you back up, then duplicity gets interrupted between writing the manifest and uploading the volume. Then, when restarted, there is no longer enough data to create as many volumes as existed previously.
  • This situation can cause an exception when trying to restart the backup.
  • This branch fixes it by deleting any excess volume information encountered when loading in the manifest. We discard volume with higher numbers than the last one read.
  • Merged in lp:~mterry/duplicity/disappearing-source
  • When restarting a backup, we may accidentally skip the first chunk of one of the source files. To reproduce this,: 1) interrupt a backup 2) delete the source file it was in the middle of 3) restart the backup
  • When replaying the source iterator to find where to resume from, we can't notice that the file is gone until we've already iterated past where it would be!
  • The solution I came up with is to just let duplicity stuff the data we accidentally read back into the source iterator.
  • This is actually a data loss bug, because it's possible to back up corrupted files (that are missing their first chunk).
  • Merged in lp:~mterry/duplicity/normalize-before-using
  • Avoid throwing an exception due to a None element in a patch sequence.
  • None elements in a (non-normalized) patch sequence are perfectly normal. With the current code in the patched function, it is certainly possible to hit a crash due a None. See http://lists.nongnu.org/archive/html/duplicity-talk/2013-11/msg00005.html
  • This branch fixes that by normalizing the sequence before using it in the logging code. It's acceptable to bring the normalize_ps() call outside the try/except block because normalize_ps is not expected to throw. It's relatively simple and doesn't really use its objects besides checking if they are None.
  • Applied patch to fix "Access GDrive through gdocs backend failing"
  • see https://lists.nongnu.org/archive/html/duplicity-talk/2013-07/msg00007.html
  • Merged in lp:~jkrauss/duplicity/pyrax
  • Rackspace has deprecated python-cloudfiles in favor of their pyrax library, which consolidates all Rackspace Cloud API functionality into a single library. Tested it with Duplicity 0.6.21 on both Arch Linux and FreeBSD 8.3.0.
  • Changed to default to pyrax backend rather than cloudfiles backend. To revert to the cloudfiles backend use '--cf-backend=cloudfiles'
  • Merged in lp:~verb/duplicity/boto-min-version
  • Update documentation and error messages to match the current actual version requirements of boto backend.
  • Merged in lp:~ed.so/duplicity/debian.paramiko.log
  • upstream debian patch "paramiko logging" http://patch-tracker.debian.org/package/duplicity/0.6.22-2
  • Merged in lp:~ed.so/duplicity/debian.dav.mkdir
  • upstream debian patch "webdav create folder recursively" http://patch-tracker.debian.org/package/duplicity/0.6.22-2
  • Nuke tabs
  • Merged in lp:~mterry/duplicity/encoding
  • This branch hopefully fixes two filename encoding issues:
  • Users in bug 989496 were noticing a UnicodeEncodeError exception which happens (as far as I can tell) because some backends (like webdav) are returning unicode filenames from list(). When these filenames are combined with the utf8 translations of log messages, either (A) the default ascii encoding can't handle promoting the utf8 bytes or -- if there aren't any utf8 bytes in the translation -- (B) the resulting unicode string raises an error later when log.py tries to upgrade the string again to unicode for printing.
  • This fix is largely implemented by adding a wrapper for backend list() implementations. This wrapper ensures that duplicity internals always see a byte string. (I'd like to eventually use this same wrapping strategy to implement generic retry support without backends having to add any logic, but that's just a thought for the future.)
  • That is, the fix for issue #1 is completely inside backend.py and the changes to backends/*.py.
  • The rest of the invasive changes deal with filenames that may not be valid utf8. This is much rarer, but possible. For proper handling of this, we need to print using unicode, and convert filenames from the system filename encoding to unicode, gracefully handling conversion errors. Some of the filenames we print are remote names. Who knows what encoding they are in; it could be different than the system filename encoding. 99% of the time, everything will be utf8 and we're fine. If we do get conversion errors, the only effect should be some question mark characters in duplicity logging output.
  • I tried to convert as much of the actual codebase to use unicode for printing. But I stopped short of adding an assert in log.py to enforce unicode, because I didn't want to go through all the backend code and manually adjust those bits without being able to test each one.
  • Restored missing line from patch of gdocsbackend.py
  • Reverted changes to gdocsbackend.py
  • Restored patch of gdocsbackend.py from original author (thanks ede)
  • Applied patch from bug 1266753: Boto backend removes local cache if connection cannot be made
  • Merged in lp:~louis-bouchard/duplicity/add-allow-concurrency
  • Implement locking mechanism to avoid concurrent execution under the same cache directory. This is the default behavior.
  • Also implement --alllow-concurrency option to disable the locking if required.
  • This functionality adds a dependency to python-lockfile

New in Duplicity 0.6.22 (Aug 23, 2013)

  • Enhancements:
  • Applied patches from Laszlo Ersek to rdiffdir to "consume a chain of sigtar files in rdiffdir delta mode" which supports incremental sigtar files.
  • Merged in lp:~jnoster/duplicity/dpbx-added - Add Dropbox backend - NB! In order to use the backend one must: 1. Install Dropbox Python SDK first. 2. Run the duplicity with Dropbox backend (dpbx://) first time *interactivelyto catch and follow the oAuth URL.
  • Merged in lp:~ed.so/duplicity/verify.data - add switch --compare-data, to selectively enable formerly always disabled data comparison on verify runs
  • Merged in lp:~tblue/duplicity/paramiko-1.10.0 - This fixes bug #1156746, making the Paramiko backend compatible with Paramiko 1.10.0. It keeps compatibility with older Paramiko versions.
  • Merged in lp:~townsend/duplicity/fix-1161599-2 - The fix in revno. 912 didn't take into account that the parameter "body" passed into request() is overloaded, so when it was NULL or of a type other than file, it would fail. This checks if "body" is of type "file" before actually seek()'ing back to the beginning of the file.
  • Merged in lp:~tblue/duplicity/paramiko-fix-delete-retry - This fixes bug #1115715, which is really annoying. Basically it makes using the Paramiko backend with the default settings impossible.
  • Merged in lp:~juan-f/duplicity/progress - From time ago, there are people asking for a progress bar estimation in duplicity. There is even a script that circumvents the issue, getting info from the log so as to estimate the progress status ( https://github.com/quentin/Duplicity-progress ) but does not give enough feedback and the estimation is rather plain. - I have developed a set of heuristics that gather information from the deltas and the transfer ratios of the backend so as to forecast % of progress, estimation of remaining time and average speed, for both full and incremental backup uploads. - The current implementation works for boto backend, but to port the other backends to use this feature would be quite easy (we can discuss the details if interested). - The algorithm is activated by the --progress command line flag, and will perform a first-pass dry-run to collect evidence for all the deltas. Next it will trigger the real upload, while a thread statistically estimates the ratio of changes and compression for the data in/out, and uses these ratios to forecast time remaining and % of completion. - The progress data will be logged each 3 seconds, or the --progress-rate flag.
  • Merged in lp:~jnoster/duplicity/dpbx-added - The application key was approved as "production" one after some changes to the code to suit the requirements of Dropbox team (the keys are now obfuscated, for instance).
  • Applied blocksize.patch from https://bugs.launchpad.net/duplicity/+bug/897423 - New option --max-blocksize (default 2048) to allow increasing delta blocksize.
  • Applied duplicity-ftps.patch from https://bugs.launchpad.net/duplicity/+bug/1104069 - Don't try to delete an empty file list.
  • Merged in lp:~scowcron/duplicity/ftp_password_pexpect - Use common backend.Backend get_password() rather than _ssh_pexpect.py specific code.
  • Merged in lp:~mhu-s/duplicity/swiftbackend - This branch adds support for Swift, the OpenStack Object Storage service. See https://blueprints.launchpad.net/duplicity/+spec/swiftbackend
  • Merged in lp:~verb/duplicity/boto-gcs - These patches add support for Google Cloud Storage via the boto backend. - boto has supported GCS in interoperability mode for a few years now. This change adds support by taking advantage of boto's storage_uri abstraction layer.
  • Merged in lp:~ckornacker/duplicity/megacloud - Add support for Mega (mega.co.nz) backend.
  • Applied patch from Eric S Raymond to man page to fix markup problems.
  • Merged in lp:~ed.so/duplicity/man.page - update paramiko links - add command parameters to synopsis - add --compare-data - some polishing and several improvements

New in Duplicity 0.6.21 (Jan 28, 2013)

  • Enhancements:
  • Merged in lp:~ed.so/duplicity/24syntaxfix
  • fix python 2.4 vs 2.5 syntax error
  • Merged in lp:~mterry/duplicity/u1-oauthlib
  • As the Ubuntu packager for duplicity, I would prefer u1backend.py used oauthlib instead of oauth. oauthlib is well maintained upstream (unlike oauth), has a python3 port (for the future), and is in Ubuntu main (so is oauth right now, but hopefully in the future we can drop it to universe, in which case duplicity can't use it anymore).
  • Merged in lp:~mterry/duplicity/delete-new-sig-in-cache
  • In duplicity 0.6.20, we fixed bug 1031269. This means that we no longer leave sig files on the remote location. Leaving sig files on the remote location also caused a bug with deleting cache files. Code used to leave remote new-sig but delete the locale cache new-sig; this meant that we would keep downloadoing the new-sig all the time from remote. We had worked around that by just not deleting the new-sig in the cache, which was sort of the wrong side of that problem to tackle. Now that we handle the remote new-sigs better (by deleting them), I don't think we need this code anymore. Patch by [email protected].
  • Merged in lp:~mterry/duplicity/u1-ascii-error
  • Fix for u1backend unicode error. Patch by Paul Barker.
  • Merged in lp:~satwell/duplicity/caching
  • Add a cache for password and group lookups. This significantly improves runtime with very large password and group configurations.
  • Merged in lp:~ed.so/duplicity/manpage
  • more formatting fixes, clarifications in sections EXAMPLES, FILE SELECTION
  • Merged in lp:~ed.so/duplicity/lftp.netrc
  • Allow .netrc auth for lftp backend
  • Merged in lp:~mterry/duplicity/946988
  • This fixes bug 946988 by not duplicating the checks for when we should ask for the password (those same checks are done more correctly inside get_passphrase). And add a test to reproduce the bug.
  • Merged in lp:~lenharo-h/duplicity/duplicity
  • Generate encrypted backups without revealing the user's key id via option --hidden-encrypt-key
  • Merged in lp:~mterry/duplicity/u1-utf8
  • Make sure u1backend returns filenames as utf8
  • Merged in lp:~carlos-abalde/duplicity/gdocs-backend-gdata-2.0.16.-upgrade
  • Upgrade of GoogleDocs backend to python gdata lib >= 2.0.15: Stop using get_everything method.
  • Merged in lp:~ed.so/duplicity/webdav.fix-retry
  • bugfix: webdav retrying broke on ERRORS like "error: [Errno 32] Broken pipe" in socket.pyas reported here https://answers.launchpad.net/duplicity/+question/212966 added a more generalized 'retry_fatal' decorator which makes retrying backend methods even easier
  • Merged in lp:~ed.so/duplicity/manpage
  • Clear up PASSPHRASE reusage as sign passphrase. Minor fixes.
  • Merged in lp:~ed.so/duplicity/u1_and_manpage
  • Manpage - document Ubuntu One required python libs - added continuous contributors and backend author notes
  • U1backend - lazily import non standard python libs, fixes http://article.gmane.org/gmane.comp.sysutils.backup.duplicity.general/5753 - fix "not bytearray" prevents PUT with python 2.6 - don't hang after putting in credentials (cause it silently retries in background) but go through with backup
  • Fixed 1091269 Data corruption when resuming with --no-encryption
  • Patches from Pascual Abellan that make block size consistent and that add -n (no-encryption) option to manual-ctrl-c-test.sh.
  • Modified gpg.py patch to use 64k block size so unit test passes.
  • Merged in lp:~mterry/duplicity/static-corruption
  • This branch fixes three possible ways a backup could get data-corrupted. Inspired by bug 1091269. A) If resuming after a volume that ended in a one-block file, we would skip the first block of the next file. B) If resuming after a volume that ended in a multi-block file, we would skip the first block of the next file. C) If resuming after a volume that spanned a multi-block file, we would skip some data inside the file.
  • A and B are because when finding the right place in the source files to restart the backup, the iteration loop didn't handle None block numbers very well (which are used to indicate the end of a file).
  • C is what bug 1091269 talks about. This was because data block sizes would get smaller as the difftar file got closer and closer to the volsize. Standard block sizes were 64 1024. But say we were close to the end of the difftar... When resuming, duplicity doesn't know the custom block sizes used by the previous run, so it uses standard block sizes. And it doesn't always match up, as you can imagine. So we would leave chunks of data out of the backed up file.
  • Tests added for these cases.
  • This branch is called 'static-corruption' because all these issues occur even when the source data doesn't change. I still think there are some corruption issues when a file changes in between duplicity runs. I haven't started looking into that yet, but that's next on my list.
  • C only happened without encryption (because the gpg writer function already happened to force a constant data block size). A and B happened with or without encryption.
  • Merged in lp:~ed.so/duplicity/webdav.fix-retry
  • added ssl certificate verification (see man page)
  • more robust retry routine to survive ssl errors, broken pipe errors
  • added http redirect support
  • Merged in lp:~ed.so/duplicity/webdav.manpage
  • explanation of webdav changes above
  • Merged in lp:~mterry/duplicity/pygi
  • Python bindings for the gobject stack (used in the gio backend) have changed from static to dynamically-generated bindings. The old static bindings are deprecated. So here's a branch to change the gio backend from old to new ones.
  • Merged in lp:~mterry/duplicity/py3rsync
  • This branch lets one build the _librsync module with Python 3. You can't really do anything useful with it, but it's a nicely-isolated piece to add Python 3 support for.
  • The changes are a mix of modernization and #ifdef logic.
  • All tests still pass in Python 2.7 and 2.4. I tested manually that the module worked as expected in Python 3.
  • Merged in lp:~duplicity-team/duplicity/po-updates
  • Updated translations

New in Duplicity 0.6.20 (Oct 29, 2012)

  • Enhancements:
  • * Merged in lp:~ed.so/duplicity/ssh.manpage
  • added gdocs and rsync REQUIREMENTS
  • added cloudfiles documentation
  • * Merged in lp:~ed.so/duplicity/gpginterface
  • refactor GnuPGInterface to gpginterface.py
  • reasoning can be found in README
  • * Merged in lp:~ed.so/duplicity/duplicity.helpfix
  • fix rare 'TypeError: encode() argument 1 must be string, not None' http://lists.nongnu.org/archive/html/duplicity-talk/2012-09/msg00016.html
  • * Merged in lp:~ed.so/duplicity/duplicity.tmpspacefix
  • use tempfile.TemporaryFile() so unused temp files are deleted automagically
  • propbably solve bug 'Out of space error while restoring a file'
  • https://bugs.launchpad.net/duplicity/+bug/1005901
  • http://lists.gnu.org/archive/html/duplicity-talk/2012-09/msg00000.html
  • * Merged in lp:~mterry/duplicity/utf8-po
  • For some crazy reason, the gettext module defaults to giving you strings in whatever charset the po file happened to define. Which means you never know what string of bytes you're going to get. This module makes sure we always get utf-8 byte strings. So we're at least predictable and reduces one source of UnicodeDecodeErrors (like in bug 989496)
  • * Merged in lp:~mterry/duplicity/1031277
  • ssh: actually delete all the requested files, not just the first one
  • * Merged in lp:~mterry/duplicity/leftover-sigtar
  • So currently, duplicity does not delete signature files when doing a remove-all-but-n operation. Seems wrong, since those signature files are now useless and take up space.
  • This branch does several things:
  • 1) Make remove-all-but-n operate on chains. In practice it did before, since the sets it operated on always came from complete chains (i.e. it never used only some of the sets from a chain)
  • 2) Add a new method to get all signature chains before a certain time.
  • 3) Use this new method to also delete signature chains during remove-all-but operations.
  • And it cleans up the cleanuptest.py file:
  • 1) Removes crufty, unused code
  • 2) Disallows changing the destination folder for the test, which no one would ever want to do and isn't really supported anyway
  • 3) Add some additional checks to the existing test
  • 4) Adds two new methods to test remove-all-but-n and remove-all-inc-of-but-n-full
  • * Merged in lp:~ed.so/duplicity/duplicity.manpage
  • disabled hyphenation and block justification for better readablility of command line examples.
  • reformatted REQUIREMENTS section for hopefully better online rendering
  • minor clarifications
  • * Merged in lp:~gregretkowski/duplicity/cf-retry-delete
  • This will retry cloudfile delete commands. With large numbers of archive files over mediocre links transient network errors will occasionally cause deletes to fail and these should be retried.
  • * Merged in lp:~mterry/duplicity/ropath.index
  • This branch does two main things:
  • 1) Skips base dir entries when compiling the list of deleted delta iters. (this gracefully recovers from the sort of situations that lead to bug 929067). I'm reasonably confident this is an uninvasive change, but please confirm.
  • 2) Overwrites the sigtar file on backup-restart. This is because AFAICT, duplicity will rewrite the entire sigtar each restart. But we were opening the sigtar file as "ab", so we'd just dump the contents on top of the previous contents. Which was causing some confusion in bug 929067. If I'm wrong that we don't always rewrite the entire sigtar each time, this needs some rethink. Please also confirm that. In addition, I added two tests for the above two changes and make some improvements elsewhere in the restarttest.py file while I was at it.
  • * Merged in lp:~ed.so/duplicity/ssh-pexpect-msgbug
  • Fixes 'UnboundLocalError: local variable 'msg' referenced before assignment' in _ssh_pexpect.py
  • * Merged in lp:~ed.so/duplicity/gpg.tmp
  • place gpg.py tempfiles in duplicity's tmp subfolder which is cleaned whatever happens
  • * Merged in lp:~mterry/duplicity/u1-402
  • Switch the code we check for out-of-space in u1backend.
  • * Applied patch for #1066625 ubuntu one backend
  • add delay between retries
  • Bugs closed in this release:
  • 519948 remove-* commands don't remove signature-files
  • 907077 assert len(chain_list) == 2 AssertionError
  • 929067 crash during restore: "assert ropath.index == (), ropath.index"
  • 995851 doc improvement for --encrypt-key, --sign-key
  • 997691 Ubuntu One backend should check for 402 error for out-of-space
  • 1031269 remove-all-but-n-full broken
  • 1039001 --exclude-if-present and --exclude-other-filesystems causes crash with inaccessible other fs
  • 1066625 ubuntu one backend does not work without gnome/dbus/x11 session

New in Duplicity 0.6.18 (Mar 1, 2012)

  • Enhancements:
  • fix extraneous '.py' in botobackend.py include
  • tests: add delay between backups to avoid assertion error
  • tests: use backup source that is more likely to be larger than 1M compressed
  • tests: make other-filesystem check more robust against certain directories being mounts or not
  • resuming an incremental results in a 'Restarting backup, but current encryption settings do not match original settings' error because curtime is incorrectly set away from previous incremental value
  • added option to not compress the backup, when no encryption is selected
  • always delay a little bit when a backend gives us errors
  • Don't cache TarInfo files. Tests still pass, so I don't believe we need the members cache (and in the old tarfile.py, we didn't cache either).
  • Adding --file-prefix option so different sets of backups can be stored in the same bucket. See blueprint at https://blueprints.launchpad.net/duplicity/+spec/file-prefix-option
  • two changes that help the test suite pass
  • raise log level on backend import failure so it will be visible under default conditions
  • file /etc/motd may not exist in test environment. Use __file__ instead to point to a known plaintext source file.
  • some code/import changes to make the ssh and boto backends compatible with Python 2.4.
  • some changes to make roottest.py compatible with the new dir structure.
  • Bugs closed in this release:
  • 884638 Python 2.5 / boto error
  • 908228 possible memory leak
  • 909031 SSH-Backend: Creating dirs separately causes a permissons-problems
  • 916689 multipart upload fails on python 2.7.2
  • 929465 UnsupportedBackendScheme: scheme not supported in url: scp://[email protected]/foo/
  • 930727 ftpsbackend should respect num_retries for ftp commands
  • 931175 duplicity crashes when PYTHONOPTIMIZE is set

New in Duplicity 0.6.17 (Nov 26, 2011)

  • Enhancements:
  • Added --rsync-options flag to allow user to pass options to rsync at will
  • Added --s3-use-multiprocessing to select the new s3 multiprocessing backend. Default is to use the single processing backend. A helper, filechunkio.py, requires Python 2.6+, so this option is not usable in earlier versions.
  • Bugs closed in this release:
  • 411145 Misleading error message: "Invalid SSH password"
  • 871875 File ... was corrupted during upload.
  • 878220 UnsupportedBackendScheme: scheme not supported in url: s3+http
  • 878964 Resuming a backup with a different password should throw an error
  • 881070 Bugfix for S3 multipart upload on 0.6.16
  • 881727 duplicity 0.6.16 lists all backup sets as incomplete
  • 885670 Duplicity fails to add incremental backups to chain...

New in Duplicity 0.6.16 (Oct 17, 2011)

  • Enhancements:
  • Usability enhancement: sign passphrase prompt has no second verification prompt anymore, symmetric passphrases are still verified
  • Fixed Unicode errors when translations are used.
  • Replaced old tarfile.py with Python 2.7 version, modded to support Python 2.4 syntax.
  • Bugs closed in this release:
  • 485219 Fixed fields are not fixed, leading to buffer overflows...
  • 676109 Amazon S3 backend multipart upload support
  • 690549 uid and guid setting adversely affects integrity
  • 739438 Local backend should always try renaming instead of copying
  • 832149 Uploads to Rackspace fail silently
  • 835892 duplicity crash: "AssertionError: rb None None"
  • 838162 Duplicity URL Parser is not parsing IPv6 properly
  • 838264 Duplicity thinks partial encrypted backups are not encrypted
  • 870116 Duplicity does not handle UIDs higher than 60001

New in Duplicity 0.6.14 (Jun 19, 2011)

  • Enhancements:
  • 452342 Provide Ubuntu One integration
  • Bugs closed in this release:
  • 433591 AttributeError: FileobjHooked instance has no attribute 'name'
  • 487720 Restore fails with "Invalid data - SHA1 hash mismatch"
  • 507904 Cygwin: Full Backup fails with "IOError: [Errno 13] Permission denied"
  • 512628 --exclude-filelist-stdin and gpg error with/without PASSPHRASE
  • 680425 Endless retype passphrase when typo
  • 705499 "include-filelist-stdin" not implemented on version 0.6.11
  • 739438 [PATCH] Local backend should always try renaming instead of copying
  • 753858 cannot import name S3ResponseError
  • 761688 Difference found: File X has permissions 666, expected 666
  • 777377 collection-status asking for passphrase
  • 778215 ncftpls file delete fails in ftpbackend.py
  • 782294 create tomporary files with sftp
  • 782321 duplicity sftp backend should ignore removing a file which is not there
  • 792704 Webdav(s) url scheme lacks port support
  • 782294 create tomporary files with sftp
  • 782337 sftp backend cannot create new subdirs on new backup
  • 794123 Timeout on sftp command 'ls -1'
  • 797758 Duplicity ignores some FatalErrors
  • 793096 Allow to pass different passwords for --sign-key and --encrypt-key

New in Duplicity 0.6.13 (Apr 4, 2011)

  • Bugs closed in this release:
  • 579958 Assertion error "time not moving forward at appropriate pace"
  • 613244 silent data corruption with checkpoint/restore
  • 731905 File "/usr/bin/duplicity", error after upgrade from 6.11 to 6.12
  • Enhancements added this release:
  • New manual test to make Ctrl-C issues easier to replicate.
  • Use python-virtualenv to make testing multiple Python versions easier.
  • In boto backend check for existing bucket before trying to create.

New in Duplicity 0.6.12 (Mar 9, 2011)

  • Bugs closed in this release:
  • 486489 Only full backups done on webdav
  • 578663 Use log codes for common backend errors
  • 581054 Inverted "Current directory" "Previous directory" in error message
  • 620163 OSError: [Errno 2] No such file or directory
  • 629136 sslerror: The read operation timed out with cf
  • 629984 boto backend uses Python 2.5 conditional
  • 655797 symbolic link ownership not preserved
  • 670891 Cygwin: TypeError: basis_file must be a (true) file ...
  • 681980 Duplicity 0.6.11 aborts if RSYNC_RSH not set
  • 700390 Backup fails silently when target is full (sftp, verbosity=4)
  • 704314 Exception in log module
  • Enhancements added this release:
  • 626915 ftps support using lftp (ftpsbackend)

New in Duplicity 0.6.11 (Nov 22, 2010)

  • 433970 Add an option to connect to S3 with regular HTTP (and not HTTPS)
  • 578663 Use log codes for common backend errors
  • 631275 missing ssh on rsyncd url - rsync: Failed to exec ssh: ...
  • 635494 backed up to S3, wiped drive, reinstalled, unable to restore backup
  • 637556 os.execve should get passed program as first argument
  • 669225 sftp: "Couldn't delete file: Failure'" only logged on level 9
  • 655468 0.6.10 does not work with S3
  • 674506 RsyncBackend instance has no attribute 'subprocess_popen_persist'
  • Merges:
  • lp:~blueyed/duplicity/bug-669225
  • lp:~duplicity-team/duplicity/po-updates
  • lp:~ed.so/duplicity/0.6.10-backend_fixes
  • lp:~ed.so/duplicity/RSYNC_RSH-fix
  • lp:~ed.so/duplicity/sign_symmetric2
  • lp:~ed.so/duplicity/survive_spaces
  • lp:~l2g/duplicity/use-py.test
  • lp:~mbp/duplicity/433970-non-ssl

New in Duplicity 0.6.10 (Sep 20, 2010)

  • Bugs closed in this release:
  • 542482 Offer command to remove old incremental backups from target
  • 578663 Use log codes for common backend errors
  • 589495 duplicity --short-filenames crashes with TypeError
  • 612714 NameError: global name 'parsed_url' is not defined
  • 613448 ftpbackend fails if target directory doesn't exist
  • 615449 Command-line verbosity parsing crash

New in Duplicity 0.6.09 (Jul 26, 2010)

  • Bugs closed in this release:
  • 502609 Unknown error while uploading duplicity-full-signatures
  • 539393 Duplicity returns 1 when continuing an interrupted backup
  • 550455 duplicity doesn't handle with large files well
  • 567738 --ssh-options options passing options to ssh do not work
  • 576564 username not url decoded in backend (at least rsync)
  • 579958 Assertion error "time not moving forward at appropriate pace"
  • 582962 Diminishing performance on large files
  • Upgraded tahoebackend to new parse_url.
  • Fix to warning message in sshbackend.

New in Duplicity 0.6.08 Beta (Mar 12, 2010)

  • rdiffdir attempts to reference undefined variables with some command arguments
  • Need accurate man page info on use of scp/sftp usage.
  • Merged lp:~mterry/duplicity/use-gpg-options-0.6
  • use global gpg options
  • Merged lp:~mterry/duplicity/fix-gpg-options-crash-0.6
  • fix time command line handling
  • and handle initial, empty value for extend commandline actions
  • fix crash on empty gpg-options argument

New in Duplicity 0.6.08 Alpha (Mar 11, 2010)

  • Fix bug where encrypted backup without --gpg-options crashes. This was a followup issue to bug 490619 released in 0.6.07.

New in Duplicity 0.6.08 (Mar 8, 2010)

  • Bugs closed in this release:
  • 519110 Need accurate man page info on use of scp/sftp usage.
  • 532051 rdiffdir attempts to reference undefined variables with some command arguments
  • 529869 TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
  • 530910 TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

New in Duplicity 0.6.20 (Aug 28, 2009)

  • With this release we mark the stabilization of the 0.6 series and make 0.5.20 the final release of the 0.5 series. After this, the 0.6 series will be merged into the stable branch and a new 0.7 series will be started. I'm not sure yet what 0.7 will be, so stay tuned.
  • For those of you wondering, 0.5.19 was never officially released with an email or other notice, so I'm including its change log below. It's now announced officially, just too late to do any good.

New in Duplicity 0.6.04 (Aug 2, 2009)

  • One major and one minor change. The "No such file or directory" error is bad enough that this should be released quickly. For those of you using encryption, this is not a problem, but for those of you that do not use encryption (--no-encryption), then this will manifest itself if the local cache gets out of sync with the remote store.
  • Bugs fixed this release:
  • 405734 duplicity fails to restore files that contain a newline character
  • 403790 Backup error: No such file or directory

New in Duplicity 0.6.03 (Jul 30, 2009)

  • Lots of small changes and some bug fixes.
  • Restart error handling has been smoothed out a great deal and it "does what is right" in order to keep going.
  • Backends are now optional, if they fail an Info message is put out to notify of the failure and why.
  • There was more work on translations and internationalization.
  • Thanks to everyone!
  • Bugs fixed this release:
  • 377528 --file-to-restore doesn't work with trailing slash
  • 394757 Backend imports should be made optional
  • 398230 Deja-dup backup fails with message: "Unable to locate last file"
  • 401303 0.6.2 manpage inconsistent wrt. archive-dir/name
  • 405646 Small i18n error
  • 405975 duplicity.gpg.gpg_failed() breaks and spews on GnuPG error
  • 402794 duplicity public-key-only incompatible with gnupg 2.0.11

New in Duplicity 0.6.02 (Jul 16, 2009)

  • 394629 Hang on first collection-status
  • 379386 Fix 'list-current-files' with missing archive dir
  • 395826 "No such file or directory" when backing up second time
  • 394627 User-friendly archive dir print
  • 388699 Manifest mismatch error

New in Duplicity 0.6.01 (Jul 2, 2009)

  • Lots of fixes and some good changes. The major change is that duplicity will synchronize the archive directory with the remote store on startup. This fixes a number of issues that occurred when upgrading from the 0.5.x series.

New in Duplicity 0.5.18 (May 21, 2009)

  • Added support for RackSpace's CloudFiles, cf+http.
  • Added support for Tahoe-LAFS from the patch, patch #6743: Tahoe backend for duplicity https://savannah.nongnu.org/patch/?6743
  • Only half of this bug is fixed but it's still useful.
  • bug #21792: pipe call fails with an error OSError: [Errno 24] Too many open files
  • https://savannah.nongnu.org/bugs/?21792
  • Changed from using ulimit external command to resource.getrlimit to check open files limit.

New in Duplicity 0.5.06 (Jan 9, 2009)

  • Fix to deprecation warnings about sha and md5 modules. Uses hashlib if available, otherwise original module. Added loop to run-all-tests.sh to run all tests against all supported versions of Python if available. Looks for 2.3, 2.4, 2.5, 2.6. Noah Spurrier has given us permission to distribute pexpect.py along with duplicity, so this will no longer be an install requirement. NcFTP version 3.2.0 will not work with duplicity since we require the use of both -f and -C options on ncftpput. 3.1.9, 3.2.1+ work fine. I put in error checks for this situation in the FTP backend code. bug #25230: --include-globbing-filelist only including first entry. https://savannah.nongnu.org/bugs/?25230 bug #25239: Error during clean, wrong case in duplcicity https://savannah.nongnu.org/bugs/?25239 patch #6709: Report correct number of volumes when restoring https://savannah.nongnu.org/patch/?6709 sr #106583: document the need to use the --force option https://savannah.nongnu.org/support/?106583