Лучший подход для обнаружения перемещения или переименования в файл в Linux?

Возможно, какое-то решение может быть применимо к Windows, однако я не знаком с ОС Windows, так что это будет сфокусировано на Linux.

Насколько я понимаю, в файловой системе Unix есть концепция inode, в которой хранятся метаданные файловой системы и «файл». Таким образом, мне интересно, можно ли использовать номер инода с какой-то дополнительной информацией для отслеживания файлов, которые переименованы или перемещены?

То, что я предлагал сделать, - это иметь начальное сканирование, которое создаст базу данных имени файла / пути, их диска / диска, на котором оно находится, их номера инода и, наконец, какую-то контрольную сумму (sha-1).

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

Я вижу некоторые возможные проблемы с этой схемой:

Файлы могут быть изменены, а затем перемещены / переименованы, и это не сможет обнаружить его, потому что контрольная сумма не совпадает.Некоторые (большинство?) Приложения, когда они изменяют файл, создают новый временный файл, а затем переключают его на текущий, поэтому индекс не будет совпадать в любом случае, даже если файл в конце неизменен ....Потребуется сохранить, на каком устройстве / файловой системе оно находится, потому что inode в каждой файловой системе уникален для этой файловой системы.Нужно было бы иметь дело с жесткими ссылками

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

Ответы на вопрос(3)

Ваш ответ на вопрос