ファイルシステムの論理構造(symlinkターゲットを含む)を単一の軽量ファイル(非バイナリ)で表現できますか?


13

長年にわたって複数のSQLおよびNoSQLデータベースで遊んだ後、データ中心の個人用アプリで移植性を確保する最善の方法は、すべての真正なデータベースを完全に避けることだと感じています。私は、ファイルシステムを、ポータブルで人間が読み取れる美しいデータベースパラダイムと見なしているため、私が書いている種類の個人アプリケーションに十分な寿命を持っています。これは、多対1の関係を表すシンボリックリンクを使用して、ツリー構造(パーティション分割に適しています)を実行するグ​​ラフデータベースのようなものです。

ファイルシステムトポロジ全体を単一のファイルとしてエクスポートする方法はありますか?findコマンドの出力は有望ですが、シンボリックリンクが指すものを示すデータをエクスポートする標準化された方法はありません。次のfindような出力形式の個人的な選択を思いつきません。

/home/me/photos/beach/me_and_my_dog.jpg -> /home/me/photos/beach/1.jpg

誰かが以前にファイルシステムトポロジのエクスポート形式を確立する作業をしたことがある場合。

別の候補はJSONファイルです。

home : [{
    me : [{
        photos : [{
            beach : [{
                1.jpg,
                { me_and_my_dog.jpg : ./1.jpg }
            }]
        }]
    }
}]

ただし、ファイルの種類を表す方法は複数あり、誰かが既に標準を確立する作業を行っているのではないかと思います。

ファイルのコンテンツをエクスポートしたくないことに注意してください。エクスポートすると、必要以上に大きくなります。

回答:


14

treeコマンドの出力には、探しているものが表示されているようです:

.
└── photos
    └── beach
        ├── 1.jpg -> me_and_dog.jpg
        └── me_and_dog.jpg

コマンドの新しいバージョンは、HTML、XML、またはJSONに出力することもできます。

XML出力:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory name=".">
    <directory name="photos">
      <directory name="beach">
        <link name="1.jpg" target="me_and_dog.jpg"></link>
        <file name="me_and_dog.jpg"></file>
      </directory>
    </directory>
  </directory>
  <report>
    <directories>2</directories>
    <files>2</files>
  </report>
</tree>

2
ああ、それはまさに私が欲しいものです。私はこのtreeコマンドを知っていました(これは素晴らしいです)が、コマンドが解析可能な形式をサポートするようになったことに気付きませんでした。
シュリダールSarnobat

1
注:このtreeコマンドはLinuxバージョンです。Windowsバージョンは、単純な「ツリー」のみを出力します。
コールジョンソン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.