Onde um aplicativo deve salvar arquivos de trabalho?

6

Estou criando um aplicativo GUI que funciona com documentos digitalizados. Ele permite que as digitalizações sejam manipuladas antes de serem salvas / exportadas, por isso, é necessário armazenar temporariamente os dados de cada página digitalizada enquanto ela está sendo trabalhada.

A quantidade de dados é muito grande (geralmente acima de 100 MB, mesmo com a compactação), portanto, armazená-los na memória não é prático. Também é um trabalho oneroso varrendo muitas páginas, portanto as varreduras devem ser preservadas em uma "área de trabalho" no disco, para que, mesmo após a reinicialização do sistema, o aplicativo possa ser reaberto e os dados verificados anteriormente estejam prontos para continuar o processamento.

Não sei ao certo onde exatamente devo guardar esses dados importantes, mas temporários:

  • /tmp/ é ruim, porque os dados devem permanecer depois de sair e reabrir o aplicativo, e até mesmo permanecer depois de uma reinicialização.
  • $HOME/.config/appname/ não está correto, já que não estou salvando dados de configuração.
  • $HOME/.local/share/ não está correto, já que a especificação XDG diz que isso é para ignorar as coisas como ícones que são armazenados em /usr/share/ e nunca haveria varreduras "globais" colocadas em /usr/share/ .
  • $HOME/.cache está próximo, mas não são dados de cache e o usuário ficaria mais aborrecido se fosse excluído depois que eles digitalizassem 100 páginas e tivessem que verificar tudo novamente.
  • $HOME/.local/lib/appname não aparece em nenhuma especificação, mas pode ser ok se .local significa usuário local ( lib vindo de /var/lib/ use.) Se isso significa local para a máquina, então não é um bom ajuste, porque o usuário deve fazer login em uma máquina com um scanner de alta velocidade, fazer suas varreduras com este aplicativo, fazer logout e, em seguida, fazer login em um PC normal e abrir o aplicativo para ver o que acabou de digitalizar - ou seja, os dados devem ser preservado em toda a rede no logout, e ~$HOME/.cache não precisa ser compartilhado entre as máquinas, então $HOME/.local pode não ser - Eu não tenho certeza.

Então, alguma sugestão sobre onde o local mais apropriado para armazenar esse tipo de dado pode ser?

EDIT: Apenas para esclarecer, este é o dado por usuário, e o aplicativo é executado como um usuário normal, portanto colocá-lo em /var/ provavelmente não está correto, pois você tem que lidar com vários usuários executando o aplicativo, além de usuários normais que não têm acesso de gravação lá.

    
por Malvineous 12.03.2015 / 10:41

2 respostas

1

Eu tenho um aplicativo GUI (usando wxPython) que importa dados de outro lugar antes de processar dois a sete arquivos de dados para produzir um arquivo CSV, um relatório em PDF e, se selecionado, vários outros formatos de relatório. Eu armazeno os arquivos de dados de origem (até arquivados) e relatórios em estruturas de diretório em $ HOME / Documents. Isso funciona bem, mas você tem que enfatizar para os Usuários que quando eles criam nomes de diretório para fazê-los sensibilizar e não dar, então, nanes como qwerty, fred1, abc123, etc.

    
por 12.03.2015 / 10:57
0

Eu uso para criar um subdiretório em opt com o nome do meu aplicativo e, abaixo disso, eu coloco arquivos temporários e auxiliares que meu aplicativo usa.

    
por 12.03.2015 / 11:13