文件系统的逻辑结构(包括符号链接目标)可以在单个轻量级文件(非二进制)中表示吗?

Sri*_*bat 13 database filesystems symbolic-link json coreutils

多年来使用多个 SQL 和 NoSQL 数据库后,我觉得确保以数据为中心的个人应用程序的可移植性的最佳方法是完全避免使用所有真正的数据库。我认为文件系统是一个漂亮的数据库范式,它是可移植的、人类可读的,因此对于我正在编写的个人应用程序类型来说,它具有足够的寿命。它就像一个图数据库,它强制执行树结构(适用于分区),用符号链接来表示多对一关系。

有没有办法将整个文件系统拓扑导出为单个文件?find命令的输出很有希望,但没有标准化的方法来导出指示符号链接指向什么的数据。我不想提出我自己个人选择的find输出格式,例如:

/home/me/photos/beach/me_and_my_dog.jpg -> /home/me/photos/beach/1.jpg
Run Code Online (Sandbox Code Playgroud)

如果之前有人做过建立文件系统拓扑导出格式的工作。

另一个候选是一个 JSON 文件:

home : [{
    me : [{
        photos : [{
            beach : [{
                1.jpg,
                { me_and_my_dog.jpg : ./1.jpg }
            }]
        }]
    }
}]
Run Code Online (Sandbox Code Playgroud)

但同样有多种表示文件类型的方法,我想知道是否有人已经完成了建立标准的工作。

请注意,我不希望导出文件的内容 - 这会使导出比需要的大得多。

hea*_*vyd 14

tree命令的输出似乎显示了您要查找的内容:

.
??? photos
    ??? beach
        ??? 1.jpg -> me_and_dog.jpg
        ??? me_and_dog.jpg
Run Code Online (Sandbox Code Playgroud)

较新版本的命令甚至会输出为 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>
Run Code Online (Sandbox Code Playgroud)

  • 哇哦,这正是我想要的。我知道 `tree` 命令(这很棒),但我没有意识到它现在支持可解析的格式。 (2认同)