Есть ли способ полностью удалить индекс, когда количество ссылок равно 2?

#c #unix #cache-control #unlink #hardlink

#c #unix #управление кэшем #разорвать ссылку #жесткая ссылка

Вопрос:

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

Теперь при попытке очистить том я рекурсивно просматриваю каталоги (не кэш) и, основываясь на определенном критерии, разблокирую файлы (что в основном уменьшает количество индексов в записи кэша на 1). Есть ли способ для меня удалить запись кэша напрямую, когда я удаляю последнюю жесткую ссылку (это уменьшает количество с 2 до 1). Таким образом, мне не пришлось бы вручную анализировать весь каталог кэша, чтобы очистить из него все индексы, количество ссылок на которые составляет всего 1.

Я просмотрел функции отсоединения / удаления и не смог найти ничего конкретного для использования. Существует ли какой-нибудь алгоритм очистки, который внутренне позаботится об этом, тогда я могу попытаться реализовать это.

Любая помощь по этому вопросу была бы высоко оценена. В ожидании быстрого ответа.

Ответ №1:

Я видел это и несколько других мест, которые инструктируют вас, как удалить все жесткие ссылки из командной строки (используйте find -samefile и вызывайте remove для каждого файла). Вы могли бы вызвать его через system, хотя некоторые люди могут с неодобрением отнестись к этому).

Ответ №2:

Нет, нет ничего, что делает то, что вы хотите из коробки.

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

Комментарии:

1. это выглядит довольно интересно, поскольку это позволяет избежать отдельной статистики в файле кэша (для оценки того, что количество ссылок в нем упало до 1). Учитывая, что я знаю имя записи в кэше в момент отключения жесткой ссылки, как я могу получить информацию о записи в кэше (по существу, ее количество) из кэша страницы. Большое спасибо за всю вашу помощь в этом.