Как связать файл с базой данных? - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь реализовать скрипт, который читает содержимое (файлы и папки) определенного каталога и записывает его в базу данных. Моя цель - создать программное обеспечение, которое позволит мне упорядочивать эти файлы и папки, связанные с ними описаниями и тегами, не затрагивая соответствующие физические файлы на диске. Но сейчас я сталкиваюсь с логической проблемой: как установить прямое соединение между этим физическим файлом и регистром базы данных? Я хочу, чтобы, даже если физический файл по какой-то причине был отредактирован или перемещен в другую папку внутри корневого каталога, программное обеспечение все еще может связать этот файл с его исходным регистром в базе данных.

Моя первая идея состояла в том, чтобы использовать хэш контрольной суммы для идентификации каждого файла, но, я предполагаю, что если файл редактируется, то хэш так же делает, не так ли? Кроме того, я также думаю, что сама папка не может быть проверена таким образом.

Другое решение, которое мне пришло в голову, - это применение уникального ключа в начале каждого имени файла и папки в каталоге. Это может сработать, но мне кажется, что это импровизированное решение, и поэтому я надеюсь, что есть другой способ сделать это, который я еще не рассматривал. У кого-нибудь есть совет по этому поводу?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

В Linux вы можете отслеживать файлы по inode , который не изменится, если файл будет перемещен или переименован. Вы даже можете получать уведомления при изменении файла .

Рассматривали ли вы сохранение файла в базе данных?

0 голосов
/ 02 апреля 2012

Вы не можете.

Похоже, что нет способа идентифицировать файл: ни по содержимому, ни по пути.

Один из обходных путей может быть следующим: использовать путь в качестве идентификатора (и использовать их в качестве ссылки в БД) и использовать системные инструменты (например, mv) для перемещения файлов, а не собственный сценарий, который обновляет файловую систему и базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...