Я создал приложение с PHP, которое показывает все файлы в домашнем каталоге пользователя, этот каталог также доступен через samba, чтобы вы могли получить доступ к нему из собственного проводника в windows, mac и linux. Я хотел дать каждому файлу идентификатор, чтобы я мог привязывать теги к каждому файлу, как бы вы это сделали? Не могли бы вы сделать хэш файла и посмотреть, будет ли он одинаковым filehash и таким образом заключить, что его тот же файл?
Могу ли я заставить samba отправлять что-то каждый раз, когда файл или папка перемещаются?
Если ваша платформа Linux и установка довольно недавно, вы можете использовать inotify, чтобы ваш PHP-код вызывался при внесении изменений в файл. См. Эту часть руководства по PHP:
http://us3.php.net/manual/en/book.inotify.php
Основное использование – добавить наблюдателя в каталог или каталоги Samba с обратным вызовом к вашему PHP-коду. По соображениям производительности было бы неплохо увидеть, может ли inotify указывать только отправлять типы обновлений, которые вас интересуют, в ваш код.
Обратите внимание, однако, что inotify будет удалять обновления / сообщения через определенный промежуток времени. Таким образом, у вас будут проблемы с синхронизацией вещей в определенный момент времени. Одним из решений было бы использовать inotify на постоянной основе, а также периодически выполнять полное сканирование каждого дома, чтобы убедиться, что оно отражает вашу базу данных (или везде, где хранятся теги).
Чтобы ответить на ваш первый вопрос, создание хэша, конечно, будет работать. Просто использовать md5 для файлов было бы достаточно. Шансы столкновения при хэшировании файлов в вашем домашнем каталоге безумно малы. ИМО, я бы сказал, даже не стоит упоминать. И это, наверное, само собой разумеется, но … Я бы сохранил хотя бы хэш и полный путь, так что вы можете иметь дело с перемещенными файлами надлежащим образом и на самом деле что-то делать с файлом.