Проверьте содержимое USB - PullRequest
0 голосов
/ 18 ноября 2010

Я разработал алгоритм C ++, который сохраняет содержимое ключа USB в базе данных.В базе данных, а также сохранить имена файлов сохраняются на USB-устройстве информация: свободные блоки и продавцы.Поэтому, когда я ставлю больше клавиш управления свободными блоками.Если сравнение должно было измениться, база данных должна быть воссоздана.Поэтому, если я удаляю или добавляю файлы на USB-ключ, база данных перестраивается с нуля.Но когда я переименовываю файл, ничего не происходит.Вы можете узнать об изменениях, не проверяя каждый файл в базе данных?

Как лучше контролировать все содержимое USB-устройства?Некоторая помощь!

Спасибо!

Ps: я использовал ioctl для имени поставщика и свободных блоков !!

Ответы [ 2 ]

0 голосов
/ 19 ноября 2010

Если вы управляете ОС и USB-ключом, вы можете использовать NTFS. Он имеет функцию журнала изменений. Он содержит порядковый номер обновления (USN). Любое изменение ключа изменит USN. Таким образом, вам нужно только сохранить старое значение в вашей базе данных. Если вы видите новое значение, перечитайте всю файловую систему и обновите USN в вашей базе данных.

0 голосов
/ 18 ноября 2010

Вы можете создать хеш-значение из списка файлов папок и сохранить его в своей БД.

Каждый раз, когда вставляется USB-накопитель, выполняйте расчет хеш-функции списка папок и сравнивайте с сохраненным значением. Если они отличаются, вы можете предположить, что файлы были удалены, добавлены или переименованы, и выполнить обновление вашей БД.

...