2012-04-02 4 views
0

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

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

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

+1

как насчет 'http: // stackoverflow.com/questions/511463/monitor-directory-for-changes', Предполагая, что вы находитесь на« * nix » – sakhunzai

+0

Большое спасибо @sakhunzai. И да, я должен был сообщить, что на самом деле каталог находится на локальном Linux-сервере, который делится своим контентом через Samba на Windows. –

ответ

1

В Linux вы можете отслеживать файлы по inode, которые не будут меняться, если файл будет перемещен или переименован. Вы можете даже get notified when a file changes.

Вы считаете, что хотите сохранить файл в базе данных?

+0

Спасибо! Я не знал об этом. Я читаю об этом прямо сейчас, и это кажется хорошим. –

+0

Хорошо. После некоторых тестов номер inode соответствует всем моим потребностям. Когда создается файл или папка, создается номер inode и удаляется только при удалении указанного файла или папки. Он остается неизменным после перемещения или редактирования файла. –

0

Вы не можете.

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

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

Смежные вопросы