Есть ли уникальный идентификатор для файлов? - PullRequest
1 голос
/ 13 июня 2009

У меня вопрос Как вы отслеживаете файлы в SMB с помощью приложения? открылся, и я подумал, могут ли быть уникальные идентификаторы для файлов, чтобы я мог отслеживать, когда файл / папка перемещается. Есть ли что-то подобное? Это может быть очень специфично для Debian

Ответы [ 2 ]

2 голосов
/ 13 июня 2009

Ответ, как всегда, «это зависит». Что вы имеете в виду под «уникальным идентификатором»? Изменится ли этот идентификатор, если содержимое файла будет изменено, или вы сочтете это тем же файлом? В Unix inode вместе с устройством определяет «уникальный идентификатор», но он сохраняется даже при изменении содержимого.

Если вы хотите узнать, что касается файла, вы можете использовать inotify на том же компьютере, чтобы узнать, что происходит с файлами (или его предшественником: dnotify).

Если вам нужно, чтобы он был на разных машинах, то я предполагаю, что samba будет использовать inotify для получения уведомлений и преобразования их в события SMB / CIFS, но я не знаком с этим.

Если вам нужен идентификатор на основе содержимого и, следовательно, вы используете хэши, вам нужно перейти в пользовательское пространство. Например, это именно то, что делает Git (система контроля версий): он отслеживает хеши содержимого, чтобы иметь «уникальный идентификатор».

1 голос
/ 13 июня 2009

Если файлы не будут перемещены, вы можете использовать хеш.

Если вы можете запустить демон в фоновом режиме, вы пишете программу, используя inotify для отслеживания событий перемещения.

Если вы не можете этого сделать, вы можете использовать номер инода (но это может изменить при перемещении файла).

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