I use duplicity to create a backup on my files to Backblaze B2. This has worked rather well until a few days ago. I had erased my local Python libraries but reinstalled. Also I extracted the passphrase into a second script that I include via source
now. Somehow an upload failed and I got this message over and over:
Ausdruckbasierte Dateiliste wird gelesen /home/mu/.config/exclude-b2.txt
Lokale und entfernte Metadaten sind bereits synchron, kein Abgleich benötigt.
Last inc backup left a partial set, restarting.
Letzte vollständige Sicherung: Mon Sep 3 09:37:45 2018
Traceback (innermost last):
File "/usr/bin/duplicity", line 1560, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 1546, in with_tempdir
fn()
File "/usr/bin/duplicity", line 1398, in main
do_backup(action)
File "/usr/bin/duplicity", line 1528, in do_backup
incremental_backup(sig_chain)
File "/usr/bin/duplicity", line 653, in incremental_backup
dummy_backup(tarblock_iter)
File "/usr/bin/duplicity", line 227, in dummy_backup
while tarblock_iter.next():
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 523, in next
result = self.process(self.input_iter.next())
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 195, in get_delta_iter
for new_path, sig_path in collated:
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 286, in collate2iters
relem2 = riter2.next()
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 354, in combine_path_iters
refresh_triple_list(triple_list)
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 341, in refresh_triple_list
new_triple = get_triple(old_triple[1])
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 327, in get_triple
path = path_iter_list[iter_index].next()
File "/usr/lib64/python2.7/site-packages/duplicity/diffdir.py", line 239, in sigtar2path_iter
for tarinfo in tf:
File "/usr/lib64/python2.7/tarfile.py", line 2510, in next
tarinfo = self.tarfile.next()
File "/usr/lib64/python2.7/tarfile.py", line 2378, in next
raise ReadError(str(e))
ReadError: missing or bad subsequent header
I went online to Backblaze B2 and deleted the last archive and signature files in the hope that it would simply resume, but it did not. The output of duplicity is now the following:
Reading globbing filelist /home/mu/.config/exclude-b2.txt
Local and Remote metadata are synchronized, no sync needed.
Warning, found the following local orphaned signature file:
duplicity-new-signatures.20181005T090005Z.to.20181005T100005Z.sigtar.part
Last full backup left a partial set, restarting.
Last full backup date: Fri Oct 5 12:00:05 2018
Reading globbing filelist /home/mu/.config/exclude-b2.txt
RESTART: The first volume failed to upload before termination.
Restart is impossible...starting backup from beginning.
Reading globbing filelist /home/mu/.config/exclude-b2.txt
Local and Remote metadata are synchronized, no sync needed.
Warning, found the following local orphaned signature file:
duplicity-new-signatures.20181005T090005Z.to.20181005T100005Z.sigtar.part
Warning, found signatures but no corresponding backup files
Last inc backup left a partial set, restarting.
Last full backup date: Mon Sep 3 09:37:45 2018
No signatures found, switching to full backup.
Reading globbing filelist /home/mu/.config/exclude-b2.txt
RESTART: Volumes 67 to 68 failed to upload before termination.
Restarting backup at volume 67.
Restarting backup, but current encryption settings do not match original settings
The invocation is the following:
PASSPHRASE=$passphrase \
duplicity \
--full-if-older-than 90D \
--exclude-filelist ~/.config/exclude-b2.txt \
--progress \
--gpg-options '--cipher-algo AES256' \
~/ \
b2://$b2_key_id:$b2_key@$b2_bucket
All variables are set, I have enabled set -u
to exit with undefined variables and also checked with set -x
that the command is what I expect.
I could probably delete all the files online and start over with a fresh full backup, but I want to understand this issue in order to resolve it if it occurs another time.