1

I have been using duplicity in a cron job for a year now, has worked just fine. Starting from last week I got the following message:

Ausdruckbasierte Dateiliste wird gelesen /home/mu/.config/exclude-b2.txt
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1637, in <module>
    if "Forced assertion for testing" in util.uexc(e):
  File "/usr/lib64/python2.7/site-packages/duplicity/util.py", line 82, in uexc
    return ufn(m)
  File "/usr/lib64/python2.7/site-packages/duplicity/util.py", line 63, in ufn
    return filename.decode(globals.fsencoding, 'replace')
AttributeError: 'tuple' object has no attribute 'decode'

The last upgrade to the duplicity package on my Fedora 30 system has been 2019-05-09, I am running version 0.7.19. The backup goes to Backblaze B2.

Is there some way that I can get this pinned down?

2 Answers 2

2
+50

This is another instance where an interrupted backup leaves duplicity in a state where it cannot recover. I have deleted the partial files from the last incremental backup and now it works again.

3
  • How do you recognize the "partial files from the last incremental backup". In my duplicity folder I have a folder duplicity-full.20190520T221318Z.vol1.difftar from "Saturday" (with an empty snapshot directory inside), duplicity-new-signatures.20191003T172053Z.to.20191004T101428Z.sigtar.gz, duplicity-inc.20191003T172053Z.to.20191004T101428Z.vol1.difftar.gz, and duplicity-inc.20191003T172053Z.to.20191004T101428Z.manifest from "Friday" and a lot more files from before. Are you suggesting to delete the folder (from "Saturday") or all the files from "Friday"?
    – alfC
    Oct 7, 2019 at 6:45
  • This worked for me, out of desperation I deleted the last basically empty directory duplicity-full.20190520T221318Z.vol1.difftar and it worked. Saved my life, I wish I had more credit to give a larger bounty. I made the backup with Fedora 30 (Deja dup) and tried to restore with duplicity 0.7.18.2 in Ubuntu 19.04, and also with Fedora 30.
    – alfC
    Oct 7, 2019 at 7:23
  • 1
    I think I just deleted all the files which contained the most recent date. No need for a bounty, I'm very happy to hear that it helped you! 😊 Oct 8, 2019 at 13:11
0

Looking at the source downloadable from gnu, it seems it is trying to handle an exception, and getting an exception whilst doing so, which is not helpful. I think you are in the very last lines of /usr/bin/duplicity:

except Exception as e:
    util.release_lockfile()
    if "Forced assertion for testing" in util.uexc(e):
        log.FatalError(u"%s: %s" % (e.__class__.__name__, util.uexc(e)),
                       log.ErrorCode.exception,
                       e.__class__.__name__)
    else:
        # Traceback and that mess
        log.FatalError(util.exception_traceback(),
                       log.ErrorCode.exception,
                       e.__class__.__name__)

It calls util.uexc(e) to look for some text that is only used during testing (apparently), and this routine is failing for some reason. You can try just changing the if to start if False and instead to bypass this test and see if you then get the real cause of the exception logged. You might also try changing to the C locale temporarily to see if that changes anything.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .