12

После долгих лет игры с несколькими базами данных SQL и NoSQL я чувствую, что лучший способ для меня обеспечить мобильность в моих личных приложениях, ориентированных на данные, - полностью отказаться от всех достоверных баз данных. Я рассматриваю файловую систему как прекрасную парадигму базы данных, которая является портативной, удобочитаемой для человека и, следовательно, обладает долговечностью, достаточной для того типа личных приложений, которые я пишу. Это похоже на графическую базу данных, которая обеспечивает древовидную структуру (подходит для разбиения) с символическими ссылками для представления отношений «многие к одному».

Есть ли способ экспортировать всю топологию файловой системы как один файл? Вывод команды 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 }
            }]
        }]
    }
}]

но опять же есть несколько способов представления типов файлов, и мне интересно, кто-то уже сделал работу по установлению стандарта.

Обратите внимание, что я не хочу экспортировать содержимое файлов - это сделает экспорт намного больше, чем нужно.

2 ответа2

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

Вы можете использовать mtree для этого. Смотрите www.freebsd.org/cgi/man.cgi?query = mtree & sektion = 8 & manpath = FreeBSD+6.3-RELEASE и code.google.com/p/mtree-port

mtree -c

Это очень универсально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .