与python有关的重复性错误?

所以我有这个错误,这显然是一个已知的问题。 我正在寻找一个解决方法,直到它被修复,因为我没有能力去没有系统备份。

Traceback (most recent call last): File "/usr/bin/duplicity", line 1532, in  with_tempdir(main) File "/usr/bin/duplicity", line 1526, in with_tempdir fn() File "/usr/bin/duplicity", line 1380, in main do_backup(action) File "/usr/bin/duplicity", line 1401, in do_backup sync_archive(decrypt) File "/usr/bin/duplicity", line 1139, in sync_archive remote_metafiles, ignored, rem_needpass = get_metafiles(remlist) File "/usr/bin/duplicity", line 1029, in get_metafiles pr = file_naming.parse(fn) File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 400, in parse pr = check_inc() File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 340, in check_inc t1 = str2time((m1 or m2).group("start_time"), short) File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 290, in str2time t = dup_time.genstrtotime(timestr.upper()) File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 295, in genstrtotime return override_curtime - intstringtoseconds(timestr) File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 203, in intstringtoseconds error() File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 194, in error raise TimeException(bad_interval_string % interval_string) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128) 

相关问题:

  • https://bugs.launchpad.net/ubuntu/+source/deja-dup/+bug/1377873

  • https://bugs.launchpad.net/ubuntu/+source/deja-dup/+bug/1422289

  • https://stackoverflow.com/questions/9644099/python-ascii-codec-cant-decode-byte

核心问题是Unicode字符串 – 你已经将它们放在某处,而Duplicity(或者至少是你可能正在使用的版本)没有配置为正确处理Unicode字符串。 这是由于Python 2的注意事项。


在Python 2中,有两个单独的“字符串”类型类:

  • str – 这是许多系统中看到的典型标准ASCII编解码器,或多或少只是标准AZ,0-9,键盘字符集中的一些符号。

  • unicode – 这是UTF-8编码,UTF-16等编码,具有大量的国际字符,表情符号等。

无论传递给Duplicity的是什么,在这种情况下,我们可能使用UTF字符集中的字符,这些字符在标准ASCII字符范围之外。 这就是为什么我们在回溯中得到UnicodeDecodeError – 我们试图将Unicode字符串转换为ASCII字符串,而我们不能因为字符在ASCII字符集之外。


我建议在Duplicity中提交一个错误来记录他们没有正确处理Unicode,但我也会查看Duplicity正在处理的任何文件,并确保你没有任何Unicode字符(或隐藏的秘密控制字符)它试图使用的字符串。

注意:根据链接的错误,这已经修复; 这可能是在Deja-Dup的更高版本中修复的,但不是您正在使用的版本,在这种情况下,您需要找到Backported或更新版本来解决错误。

在其中一个错误上,在Unicode集中重命名具有外来字符集的文件名的解决方法应该重命名为仅ASCII文件名,以便DejaDup正确处理它们。 这是唯一已知的解决方法,而不是更新到更新的DejaDup版本。

请确保使用最新版本0.7.12,因为在这方面有一些改进。

看起来像duplicity尝试引发TimeException ,但在打印错误转换时遇到麻烦

当前的解决方法应该是设置LC_ALL env var以禁止双重翻译并使用默认的英文字符串。 要么导出设置,要么将其放在你的两面派调用之前,就像这样

 LC_ALL=C duplicity ... 

这当然不会解决错误,但至少会显示错误(TimeException)引起的错误。

..ede / duply.net