GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのファイルタグ付けの良い解決策は何ですか?

この機能を提供しようとする新しいプログラムのアルファ版をリリースしました。現在、すべてではありませんが、一部の要件を満たしています。とにかく興味があるかもしれません。タグ付け用のコマンドライン ツールとブラウジング用の仮想ファイル システムを提供します (タグはディレクトリで表されます)。

http://www.tmsu.org/

<ブロック引用>

ユーザーが読めるファイルには自由にタグを付けることができます

はい。

<ブロック引用>

ユーザーは 1 つまたは複数のタグに一致するファイルを検索できます

はい。コマンドライン ツールを使用するか、仮想ファイル システムのタグ ディレクトリを参照してください。

<ブロック引用>

以前に関連付けられたタグを失うことなく、ファイルを移動できます

いいえ。ただし、アプリケーションはタグ付けされたファイルのフィンガープリントを保存します。これは、移動されたファイルの識別に使用されます。移動したファイルのパスを更新する「修復」コマンドが提供されています。 (明らかに、ファイルが移動され、変更された場合、このメカニズムは機能しません。)

<ブロック引用>

システムは簡単にバックアップできます

はい。シンプルな Sqlite 3 データベース ファイルです。

<ブロック引用>

どのデスクトップ環境にも依存しません

はい。依存関係はなく、仮想ファイル システムとして実行できるため、シンボリック リンクをサポートする任意のプログラムでファイル システムとして閲覧できます。

<ブロック引用>

GUI が関係している場合は、cli フォールバックが必要です

現在 GUI はありません。


どのような種類の検索が必要かは明確ではありません。ホームディレクトリだけでなく、UNIX のどこでも動作させたい場合、およびパス名ベースの検索のみを実行したい場合は、次のスキームが実行可能です。少しシェル ハッカーを使用し、標準の locatedb :

<オール>
  • 少なくとも 1 つのタグ付きファイルを含む各ディレクトリには、標準のサブディレクトリ (.path-tags など) が必要です。;
  • リンク $TAG を持つディレクトリ $FILE 内の各ファイル (文字 _ を含めないでください) ) リンク $TAG_$FILE -> ../$FILE があります
  • locate-tagの詳細は残しておきます あなたへのスクリプト。 locate のみを使用して、2 ライナーまたは 3 ライナーにする必要があります。 コマンドとシェルのハッキング。 (興味があれば、書きます)。

    詳細は覚えていませんが、KDE ​​関係者の何人かがこの種のメタデータのスキームについて話しました。

    find にラップされた同様のスクリプトを使用して、このスキームに基づいて、より洗練されたコンテンツ検査テストを実行することも可能です。 .

    更新された要件についての考え

    <オール>
  • ユーザーが読めるファイルは自由にタグ付けできます - はい、問題ありません
  • ユーザーは 1 つまたは複数のタグに一致するファイルを検索できます - 同様に
  • 以前に関連付けられたタグを失わずにファイルを移動できます ・ファイルが置かれているディレクトリは自由に移動できるのですが、ファイルがディレクトリから移動されてしまうと困ります。タグの形式が $TAG_$INODE_$FILE の場合 そして、どのパスが特定の inode を持っているかを効率的に見つける方法があるので、これを行うことができ、ファイルシステムの外に移動した場合にのみタグを失います。ファイルをコピーすると問題が発生する可能性があり、これは当初の提案よりも明らかに複雑です。
  • システムは簡単にバックアップできた - 基本的に難しいことではない
  • どのデスクトップ環境にも依存しない - なし
  • GUI が関係している場合は、cli フォールバックが必要です - そこに住んでいます!
  • あとがき (1)への回答で示したリンク(2)で説明されている「reverse-inode-lookup」ファイルを使用して、追加のインフラストラクチャを提供できます。タグのファイル名で指定された各 inode が、タグが指すファイル (存在する場合) の inode と一致することをチェックする、逆引きファイルでサービスを実行できます。一致するものがない場合は、必要な手術が実行され (inode はまだ存在するか? どこにあるのか?)、逆引き参照ファイルが変更または再生成され、タグのシンボリック リンクが更新されます。

    1 つのトリッキーなケースが予想されます。タグ付けされたファイルがあるべき場所にない場合、逆引きファイルはまだ存在すると言いますが、放蕩ファイルはルックアップ ファイルが言う場所になく、ルックアップ ファイルが存在しません。日にち?このケースを処理する方法はいくつかありますが、明らかに理想的な方法はありません。これとは別に、このタスク全体は、Perl が適している種類のもののようです...


    誰も言及していませんが、拡張ファイルシステムの属性を確認する必要があります。たとえば、ext4にはそれらがあります。それらに対処するためのツール getfattr および setfattr があります。もちろん、sometag でタグ付けされたファイルを検索するために、いくつかのシェル スクリプトを作成する必要があります。前述の質問に関しては、すべての答えが「はい」です。ファイル システムに依存していることだけを考慮してください。


    Linux
    1. Linux:複数のファイルのファイル拡張子を削除する

    2. Linux 用の優れた 16 進エディタが必要

    3. Linux で開いているファイルの最大数の制限は何ですか?

    1. (Fedora) Linux に適した CHM ファイル ビューアーは何ですか?

    2. Windows の Linux の File コマンドに相当するものは何ですか?

    3. Linux 上の大きなファイルのバイナリ diff/パッチ?

    1. メディアファイルスペースを節約するための7つのLinuxコマンドラインのヒント

    2. Linuxでmvなしでファイルを移動する

    3. Linux のすべての検索に代わるものは何ですか?