Существует ли уникальный идентификатор для файлов?
Вопрос
У меня есть вопрос Как вы отслеживаете файлы в SMB с помощью приложения? откройте, и я задумался, возможно, существуют уникальные идентификаторы для файлов, чтобы я мог отслеживать, когда файл / папка перемещается.Есть ли что-то подобное этому?Это может быть очень специфично для debian
Решение
Ответ, как всегда, "это зависит".Что вы подразумеваете под "уникальным идентификатором"?Изменится ли этот идентификатор при изменении содержимого файла, или вы будете рассматривать это как один и тот же файл?В Unix индекс вместе с устройством определяет "уникальный идентификатор", но он сохраняется, даже если содержимое изменяется.
Если вы хотите узнать, что касается файла, вы можете использовать inotify на том же компьютере, чтобы узнать, что происходит с файлами (или его предшественником:dnotify).
Если вам нужно, чтобы это распространялось по машинам, то я предполагаю, что samba будет использовать inotify для получения уведомлений и преобразования их в события SMB / CIFS, но я с этим не знаком.
Если вам нужен идентификатор на основе содержимого и поэтому вы используете хэши, вам нужно перейти в пространство пользователя.Например, это именно то, что делает Git (система контроля версий):он отслеживает хэши содержимого, чтобы иметь "уникальный идентификатор".
Другие советы
Если файлы не будут перемещены, вы можете использовать хэш.
Если вы можете запустить демон в фоновом режиме, вы пишете программу, используя inotify
чтобы отслеживать события перемещения.
Если вы не можете этого сделать, вы могли бы использовать номер индекса (но это мог бы изменение при перемещении файла).