クリーンアップの目的のために、特定のファイルシステムオブジェクトはほとんどの場合ファイルとして表示され、時にはディレクトリとして表示されることを望みます。
基本的なアイデアは、通常、、、、/に対してcp
オブジェクトmv
が別々のファイルとして表示されるようにしたいということですfind
。 、、、などの他のアプリケーションの場合は、ディレクトリとして表示したいです。誰かがこれを行うメカニズムを提案できますか?updatedb
locate
vlc
rythmbox
feh
okular
これを説明するために例を挙げましょう。
私が念頭に置いているオブジェクトの名前を_my_books_on_m4_programming.arch_とします。移動/コピーまたは検索/検索の目的で、オブジェクトはファイルのように見えますが、オブジェクトから本を読むにはディレクトリのように見えます。つまり、コマンドの場合okular my_books_on_m4_programming.arch/beginner/m4_for_dummies.pdf
。
私は2つの半分の可能な解決策を考えてみましたが、どちらかについては助けが必要です。
1つ目は、ファイルシステムの特殊属性を使用するようにLinuxを変更することでした。そのプロパティが設定されている場合は、環境(たとえば)を見つけます
SPECIAL_OBJECT_IS_FILE
。設定されている場合はファイルとして処理します。設定しない場合はディレクトリとして扱います。このアプローチの問題は、システム全体を変更せずにそれを実装する方法がわからないことです。2番目の技術は、ファイルをいくつかのディレクトリにマウントされたアーカイブ(tar、zip、rarなど)に保存することです。オブジェクトをアーカイブとして処理するにはネイティブアーカイブを参照し、オブジェクトをディレクトリとして処理するにはマウントポイントを参照してください。可能ですか?
ハーフテクニックは2番目のテクニックの単なるバリエーションであり、アーカイブをインストールする代わりにそれへのリンクを作成しました。そのようなことは可能ですか?
似たようなことをしたい人が誰もいないと信じられないので、何か方法があると思います。提案?
答え1
場合によっては、これらのファイルが別々のファイルとして表示されることを望まない理由はわかりません。最終的にmy_books_on_m4_programming.arch
ディレクトリの場合はを使用してコピーし、cp -rp
を使用して検索できますlocate
。
ヒューズ(ユーザースペースのファイルシステム)は、軽量ファイルシステムを実装する方法を提供し、既存のファイルの代替ビューを提供する複数のFUSEファイルシステムがあります。同じファイル(たとえば、同じファイルパス)がディレクトリと一般ファイルの両方で表示されると、多くのアプリケーションが混乱する可能性がありますが、同じファイルをある場所ではディレクトリとして表示し、ある場所では一般ファイルとして表示する既存のソリューションがたくさんあります。あります。 location ファイルの別の場所です。
特に、AVFSアーカイブとリモートファイルがディレクトリとして表示されるようにします。私はこれがあなたが探しているものに最も近い既存のものだと思います。
$ mountavfs
$ ls my_books_on_m4_programming*
my_books_on_m4_programming.tgz
$ tar tzf my_books_on_m4_programming.tgz
beginner/m4_for_dummies.pdf
$ ls ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/
beginner
$ okular ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/beginner/m4_for_dummies.pdf
答え2
ループバックファイルシステムの使用を検討できます。
まず、ファイルシステムを含むファイルを作成します。
dd if=/dev/zero of=~/myfilesys bs=8K count=256
これにより、空の2GBファイルが作成されます。次に、ループバックデバイスに接続する必要があります。
losetup /dev/loop0 ~/myfilesys
これでファイルシステムを作成します。
mkfs -t ext3 /dev/loop0
最後に、ファイルシステムをマウントします。
mkdir ~/myfilesys.d
mount /dev/loop0 ~/myfilesys.d
完了したら:
umount /dev/loop0
losetup -d /dev/loop0
後でもう一度使用してください。
losetup /dev/loop0 ~/myfilesys
mount /dev/loop0 /mnt/myfilesys.d
losetup
(はい、ステップとステップを組み合わせることができることはわかっていますが、mount
説明のためにステップを別々に維持すると、進行状況をより明確に表示できます。)
現在、この~/myfilesys
ファイルはすべてのコマンドのファイルと同じように見え、機能しますが、インストールされたら~/myfilesys.d
。