перехват вызовов файловой системы

Я пишу приложение, для которого мне нужно перехватывать некоторые системные вызовы файловой системы, например. разорвать связь. Я хотел бы сохранить какой-нибудь файл, скажем abc. Если пользователь удаляет файл, мне нужно скопировать его в другое место. Поэтому мне нужно отключить ссылку для вызова моего кода перед удалением abc, чтобы я мог его сохранить. Я прошел через потоки, связанные с перехватом системных вызовов, но такие методы, как LD_PRELOAD, не будут работать в моем случае, потому что я хочу, чтобы это было безопасно и реализовано в ядре, поэтому этот метод бесполезен. inotify уведомляет о событии, поэтому я не смог его сохранить. Не могли бы вы предложить какой-нибудь такой метод. Я хотел бы реализовать это в модуле ядра, а не изменять сам код ядра. Другой метод, предложенный Грэмом Ли, я думал об этом методе, но у него есть некоторые проблемы, мне нужно зеркало с жесткой ссылкой для всех файлов, которые он не занимает места, но все же может быть проблематичным, поскольку мне приходится многократно зеркалировать диск, чтобы мое зеркало было в рабочем состоянии. date, также он не будет работать с перекрестным разделом и с разделом, не поддерживающим ссылку, поэтому мне нужно решение, с помощью которого я мог бы прикреплять крючки к файлам / каталогам, а затем следить за изменениями вместо повторного сканирования. Я также хотел бы добавить поддержку записи измененного файла, для которого я не могу использовать жесткие ссылки.Я хотел бы перехватывать системные вызовы, заменяя системные вызовы, но мне не удалось найти какой-либо способ сделать это в linux> 3.0. Пожалуйста, предложите какой-нибудь способ сделать это.

10
задан gaurav 22 December 2011 в 16:02
поделиться