Лучший подход для обнаружения перемещения или переименования в файл в Linux? - PullRequest
3 голосов
/ 18 августа 2010

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

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

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

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 18 августа 2010

Просмотрите inotify, который позволяет вам звонить, когда кто-нибудь что-то делает с файлами в указанной файловой системе или каталоге.

0 голосов
/ 21 июня 2017

logroate использовать команду mv, есть статья, объясняющая, почему fd не изменяется при перемещении файла Как команды UNIX mv и rm работают с открытыми файлами?

0 голосов
/ 18 августа 2010

Обратите внимание, что зависит от файловой системы .Это возможно в ext3 и аналогичных файловых системах, но, возможно, не в других.Вероятно, это также довольно ресурсоемкая операция, поскольку она должна сканировать диск для проверки всех инодов, поэтому вам нужно найти решение, которое будет уведомлено об изменении инодов (вместо того, чтобы сканировать их все).).

...