web-dev-qa-db-ja.com

アプリは作業ファイルをどこに保存する必要がありますか?

スキャンしたドキュメントで動作するGUIアプリケーションを設計しています。保存/エクスポートする前にスキャンを操作できるため、スキャン中の各ページのデータを一時的に保存する必要があります。

データの量は非常に多いため(圧縮しても100MBを超えることが多い)、メモリに保存することは実用的ではありません。また、多くのページをスキャンするのは面倒な作業なので、スキャンをディスクの「作業領域」に保存して、システムを再起動した後でもアプリを再度開いて、以前にスキャンしたデータを処理を続行できるようにする必要があります。

この重要な、しかし一時的なデータをどこに正確に保存すべきかはよくわかりません。

  • /tmp/は不良です。データはアプリを終了して再度開いた後も残り、再起動後も残るはずだからです。
  • $HOME/.config/appname/は、保存している構成データではないため、実際には正しくありません。
  • XDG仕様 は、これは$HOME/.local/share/に格納されているアイコンなどをオーバーライドするためのものであり、/usr/share/に「グローバル」スキャンが配置されることは決してないため、/usr/share/は正しくありません。
  • $HOME/.cacheは近いですが、これはキャッシュデータではなく、ユーザーが100ページをスキャンした後に削除され、すべてをもう一度スキャンしなければならなかった場合、ユーザーは最もイライラします。
  • $HOME/.local/lib/appnameはどの仕様にも表示されませんが、.localがユーザーローカルを意味する場合は問題ない可能性があります(lib/var/lib/の使用に由来します)。高速スキャナーを搭載したマシンにログインし、このアプリでスキャンを実行し、ログアウトしてから、通常のPCにログインし、アプリを開いて、スキャンした内容を確認できます。つまり、データを保存する必要があります。ログアウト時のネットワーク、および~$HOME/.cacheをマシン間で共有する必要がないため、$HOME/.localも共有できない可能性があります-わかりません。

では、この種のデータを保存するのに最も適切な場所はどこにあるのでしょうか。

編集:明確にするために、これはユーザーごとのデータであり、アプリケーションは通常のユーザーとして実行されます。したがって、通常のユーザーが持っていないことを除いて、アプリケーションを実行している複数のユーザーを処理する必要があるため、/var/に入力することはおそらく正しくありませんそこにアクセスを書き込みます。

6
Malvineous

2〜7個のデータファイルを処理してCSVファイル、a PDFレポート、および選択した場合は他の多くのレポート形式を生成する前に、他の場所からデータをインポートするGUIアプリケーション(wxPythonを使用)があります。 。ソースデータファイル(アーカイブされるまで)とレポートを$ HOME/Documentsのディレクトリ構造に保存します。これはうまく機能しますが、ユーザーがディレクトリ名を作成して機密性を高め、qwertyのような名前を付けないようにすることをユーザーに強調する必要があります。 fred1、abc123など。

1
MichaelJohn

optの下にアプリの名前でサブディレクトリを作成するために使用し、この下にアプリケーションが使用する一時ファイルと補助ファイルを配置します。

0
jcbermu