Snažím se zprovoznit zálohu namountovaného disku do AWS S3 nebo Backblaze B2.
V obou případech jsem narazil na problém při čtení souboru z diakritikou z disku. Všechny standardní bashové příkazy pracují se soubory normálně, ale v Pythonu se mi nedaří nijak nastavit UTF-8 a dostávám:
File "/usr/lib/python2.7/site-packages/b2/sync/folder.py", line 220, in _handle_non_unicode_file_name
raise EnvironmentEncodingError(repr(name), sys.getfilesystemencoding())
EnvironmentEncodingError: file name '\xc5\xa0usta Richard' cannot be decoded with system encoding (ASCII).
We think this is an environment error which you should workaround by setting your system encoding properly, for example like this:
export LANG=en_US.UTF-8
Nicméně žádné nastavení proměných prostředí jako LANG, LC_CTYPE ani PYTHONIOENCODING nepomáhá.
V Pythonu se moc nevyznám, ale problém je IMHO, že default encoding je stále:
Tohle bych nejspíš řešil přes LXC. Konkrétně v Turris OS (a musl libc) se nijak moc nevyznám, ale jiný přístup než LXC jsem rychle nenašel, takže pokud nemáte důvod se LXC vyhnout…
Ve velice krátké době by měl být přijat následující pull request do OpenWrt, který přidává awscli a jeho závislosti. Takže by to mělo být zase o něco jednodušší s následující verzí OpenWrt 19.xx.
S velkou pravděpodobností se obávám, že se to nedostane do verze 18.06.02. Takže pokud bude vše fungovat, tak jak má, tak balíčky backportnu do Turris OS 4.0.
@Pepe díky moc za nakopnutí. Python3 pomohl.
Taky mě nenapadlo, že by to bylo jinak v Python 2.x vs. Python 3 a hledal jsem problém v nastavení locale.