Comment 19 for bug 1652410

Revision history for this message
Naël (nathanael-naeri) wrote :

I have also replicated the bug, on Ubuntu 14.04 deja-dup 30.0 duplicity 0.6.23 (haven't got a more recent version yet but David has), as a newly-created user with the default Déjà-Dup settings:

1. Perform the first full backup and check that the backup, the file signatures, and the manifest file have been successfully created:

$ ls -l ~/deja-dup
-rw------- 1 luke luke 171 Jan 16 00:51 duplicity-full.20170115T235149Z.manifest
-rw------- 1 luke luke 48989 Jan 16 00:51 duplicity-full.20170115T235149Z.vol1.difftar.gz
-rw------- 1 luke luke 9965 Jan 16 00:51 duplicity-full-signatures.20170115T235149Z.sigtar.gz

2. Uncompress the backup volume:

$ gunzip --to-stdout duplicity-full.20170115T235149Z.vol1.difftar.gz > duplicity-full.20170115T235149Z.vol1.difftar

$ ls -l ~/deja-dup
-rw------- 1 luke luke 171 Jan 16 00:51 duplicity-full.20170115T235149Z.manifest
-rw-rw-r-- 1 luke luke 480256 Jan 16 00:57 duplicity-full.20170115T235149Z.vol1.difftar
-rw------- 1 luke luke 48989 Jan 16 00:51 duplicity-full.20170115T235149Z.vol1.difftar.gz
-rw------- 1 luke luke 9965 Jan 16 00:51 duplicity-full-signatures.20170115T235149Z.sigtar.gz

3. Start the first incremental backup and witness the assertion error in duplicity that David reported:

$ deja-dup --backup
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1494, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1488, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1337, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1370, in do_backup
    globals.archive_dir).set_values()
  File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 697, in set_values
    self.get_backup_chains(partials + backend_filename_list)
  File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 819, in get_backup_chains
    map(add_to_sets, filename_list)
  File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 809, in add_to_sets
    if set.add_filename(filename):
  File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 100, in add_filename
    (self.volume_name_dict, filename)
AssertionError: ({1: 'duplicity-full.20170115T235149Z.vol1.difftar'}, 'duplicity-full.20170115T235149Z.vol1.difftar.gz')

$ DEJA_DUP_DEBUG=1 deja-dup --backup > deja-dup.log1
# see attached file for details

4. Interestingly, duplicity already has checks to avoid considering files whose names don't look like they could be part of a backup set, as proven by the success and log file of the following incremental backup:

$ ls -l ~/deja-dup
-rw-rw-r-- 1 luke luke 0 Jan 16 01:08 assignment.odt
-rw-rw-r-- 1 luke luke 0 Jan 16 01:08 creative-writing-syllabus.pdf
-rw-rw-r-- 1 luke luke 0 Jan 16 01:08 duplicity-commandline-memo.txt
-rw-rw-r-- 1 luke luke 0 Jan 16 01:08 duplicity-full-1995-movie.mkv.vol1.rar
-rw------- 1 luke luke 171 Jan 16 00:51 duplicity-full.20170115T235149Z.manifest
-rw------- 1 luke luke 48989 Jan 16 00:51 duplicity-full.20170115T235149Z.vol1.difftar.gz
-rw------- 1 luke luke 9965 Jan 16 00:51 duplicity-full-signatures.20170115T235149Z.sigtar.gz

$ DEJA_DUP_DEBUG=1 deja-dup --backup > deja-dup.log2
# see attached file for details (truncated to the interesting bits)

So there's no need to come up with a brand-new extensive filename filter, it's already here, only improve it so it doesn't burp so hard when a backup volume is present in both compressed and uncompressed forms.