Возможно, какое-то решение может быть применимо к Windows, однако я не знаком с ОС Windows, поэтому это будет сфокусировано на Linux.
Насколько я понимаю, в файловой системе Unix есть концепция inode., где хранятся метаданные файловой системы и «файл».Таким образом, мне интересно, можно ли использовать номер инода с некоторой дополнительной информацией для отслеживания файлов, которые переименовываются или перемещаются?
Что я предлагал сделать, так это иметь начальное сканирование, которое создавало бы базу данныхимя файла / путь, их диск / диск, на котором он находится, их номер инода и, наконец, какая-то контрольная сумма (sha-1).
Это позволит системе использовать номер инода длябыстро определить, был ли файл перемещен или переименован, затем он проверит контрольную сумму, чтобы проверить, действительно ли это тот же файл.
Я вижу некоторые возможные проблемы с этой схемой:
- Файлы могут быть изменены, затем перемещены / переименованы, и это не сможет обнаружить их, поскольку контрольная сумма не будет совпадать.
- Некоторые (большинство?) Приложения, когда они изменяют файл, создадут новый временный файли затем переключите его на текущий, таким образом, индекс не будет совпадать в любом случае, даже если файл в конце неизменен ....
- Нужно будет хранить данные о том, на каком устройстве / файловой системе оно находится, потому что inode в каждой файловой системе уникален для этой файловой системы.
- Нужно иметь дело с жесткими ссылками
Мне интересно, есть ли еще какие-то ошибки, о которых я здесь забываю?Я надеялся, что смогу использовать иноды, чтобы быстро отследить, какие файлы были перемещены или переименованы, а затем проверить контрольную сумму, чтобы убедиться, что это действительно тот же файл.