重复错误与python有关吗?

use*_*607 2 python duplicity

所以我遇到了这个错误,这显然是一个已知问题。我正在寻找一种变通方法,直到它被修复,因为我不能没有系统备份。

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1532, in <module>
    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)
Run Code Online (Sandbox Code Playgroud)

相关问题:

Tho*_*ard 5

核心问题是 Unicode 字符串——你在某个地方得到了它们,并且 Duplicity(或者至少,你可能使用的版本)没有配置为正确处理 Unicode 字符串。这是由于 Python 2 的警告。


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

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

  • unicode- 这是 UTF-8 编码、UTF-16 等编码,其中包含大量国际字符、表情符号等。

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


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

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

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