Erro de duplicidade relacionado a python?

2

Então, estou tendo esse erro, que aparentemente é um problema conhecido. Eu estou procurando uma solução alternativa até que seja corrigido, porque não posso me dar ao luxo de ir sem backup de sistemas.

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)

Problemas relacionados:

por user447607 07.04.2017 / 21:45

2 respostas

4

O problema principal são cadeias de caracteres Unicode - você as tem em algum lugar, e a Duplicity (ou, pelo menos, a versão que você está usando possivelmente) não está configurada para manipular as cadeias de caracteres Unicode corretamente. Isso se deve às advertências do Python 2.

No Python 2, existem duas classes de tipo "string" separadas:

  • str - Este é o codec padrão ASCII típico visto em muitos sistemas, e é mais ou menos apenas o padrão AZ, 0-9, alguns símbolos do conjunto de caracteres do teclado.

  • unicode - Esta é a codificação UTF-8, as codificações UTF-16, etc., que possuem um intervalo enorme de caracteres internacionais, emojis, etc.

O que quer que esteja sendo passado para Duplicity, neste caso, é provável que usemos um caractere dos conjuntos de caracteres UTF que esteja fora do intervalo de caracteres ASCII padrão. É por isso que obtemos um UnicodeDecodeError no traceback - estamos tentando converter cadeias de caracteres Unicode em cadeias ASCII, e não podemos devido a caracteres estarem fora dos conjuntos de caracteres ASCII.

Eu sugeriria arquivar um bug no Duplicity para fazer uma anotação que eles não manipulam o Unicode corretamente, mas eu também verificaria quaisquer arquivos que Duplicity está manipulando e certifique-se de que você não possui nenhum caractere Unicode (ou controle secreto oculto) caracteres) nas cordas que está tentando trabalhar.

  

NOTA: De acordo com os bugs ligados, isso já está corrigido; É possível que isso tenha sido corrigido em uma versão posterior do Deja-Dup, mas não na versão que você está usando, caso em que você precisaria encontrar uma versão Backported ou Updated para contornar o erro. / p>      

Em um dos bugs, uma solução alternativa para renomear nomes de arquivos com conjuntos de caracteres estrangeiros no conjunto Unicode deve ser renomeada para nomes de arquivos somente ASCII, para que o DejaDup os manipule apropriadamente. Essa é a única solução conhecida, com pouca atualização para uma versão mais recente do DejaDup.

    
por Thomas Ward 07.04.2017 / 21:53
0

Certifique-se de usar a última versão 0.7.12, pois houve algumas melhorias nesse sentido.

Parece que a duplicidade tenta gerar um TimeException , mas se depara com a impressão da tradução de erros.

A solução atual deve ser a configuração LC_ALL env var para proibir a duplicação de tradução e o uso das strings inglesas padrão. Exporte a configuração ou coloque-a na frente da sua chamada de duplicidade, assim

LC_ALL=C duplicity ...

Isto, obviamente, não solucionará o erro, mas, pelo menos, mostrará a causa do erro (TimeException).

.. ede / duply.net

    
por ede 09.04.2017 / 12:41