|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Kirill Frolov 2:5030/827.2 22 Jan 2004 23:27:06 To : Kirill Frolov Subject : Fwd: дата последней доступа к файлу, "Мои документы" --------------------------------------------------------------------------------
В линухе, да и в других юнихах насколько я знаю, нет такой важной
вещи, вроде каталога "Моих документов" в виндовсе. Это несколько
затрудняет работу с этими самыми "Моими документами", так как приходится
вручную разбираться в структуре файловой системы и местоположении этих
"документов".
Также зачастую невозможно сказать, как часто используются, и
используются ли вообще конкретные документы (файлы). Время последнего
доступа atime ничего не говорит ввиду того, что постоянно изменяется при
осуществлении резервного копирования, программой updatedb (aka locate) и
рограммами вроде file, xfm, dfm, konqerror, nautilus, midnight commander
и другими... А ведь часто имеется огромная и неструктурированная куча
"документов", лучшей организацией которой было, помещение в архив или
удаление наиболее редко используемых файлов (для каталогов вроде /tmp),
всё это совместно с полнотекстовым поиском, разумеется.
Для решения означенных выше задач приходит в голову идея библиотеки,
загружаемой через LD_PRELOAD, и запоминающей при выполнении системного
вызова open, время последнего использования каждого файла, и какие файлы
наиболее часто используются и какими программами. Параллельно можно
отфильтровывать случаи использования файла служебыми программами, вроде
утилит резервного копирования и индексирования. Возникает вопрос: ГДЕ
МОЖЕТ СОХРАHЯТЬСЯ ИHФОРМАЦИЯ О ВРЕМЕHИ ИСПОЛЬЗОВАHИЯ ФАЙЛА?
Первое, что приходит в голову -- какая либо БД, вроде mysql, sqlite
или даже gdbm. Hо это мне кажется слишком громоздким и сложным решением,
тем более что в данном случае требуется или отдельный процесс-сервер или
особо устойчивая к сбоям БД.
Второй вариант, к которому я больше склоняюсь предполагает запись
ссылок на последние несколько (десятков-сотен...) используемых файлов в
~/Recent, и возможно, кроме того, запись в ещё один каталог
shell-скриптов позволяющих "открыть" файл той же программой, какой он
был открыт в последний раз. Также предполагается организация в каждом
подкаталоге $HOME скрытого каталога, например с именем ".attributes".
В скрытых подкаталогах будут содержаться файлы, с именами в точности
соответствующими файлам основного каталога, и mtime каждого файла будет
содержать время последнего доступа к файлу со стороны пользователя, а не
служебных программ, в отличии от atime. Кроме того, само тело скрытых
файлов может содержать дополнительные атрибуты, вроде комментариев,
ссылок на другие файлы и т.п. Идея позаимствована с каталогов
".AppleDouble" оставляемых неизвестными мне программами, и содержащими
атрибуты файлов для ЭВМ "Apple Macintosh". Где-то, не помню уже где,
читал, что в новой версии ext2 файловой системы для linux планируется
поддержка расширенных атрибутов, как в OS/2. Так что теоретически, со
временем, вместо скрытых каталогов могут быть использованы расширенные
атрибуты. Мне этот путь, по сравнению с записью в БД, кажется более
unix-way.
Конечно, описанный выше подход имеет определённые недостатки, вроде
захламления файловой системы посторонними файлами и тому подобного...
Кроме того, поскольку в отличие от БД нет никакой таблицы
индексированной по времени использования невозможно достаточно быстро
вывести список файлов отобранный и отсортированный по времени доступа.
С другой стороны, ссылки на наиболее часто используемые файлы всегда есть
в ~/Recent, а наиболее редко используемые файлы на то и редко
используемые, что доступ к ним требуется редко... и скорей всего их
однажды понадобится просто удалить или заархивировать. Операция поиска
наиболее ненужных файлов, проводимая раз в сутки-неделю, параллельно с
updatedb, резервным копированием и индексированием текстовых данных,
я думаю, не будет сильно загружать систему.
А что вы думаете по этому поводу? Как по хранению данных о времени
последнего доступа, так и об организации неструктурированного
файлохранилища вообще?
PS: исправлять atime назад после каждого read() "системой" программы реально
дурная идея -- меняется ctime и tar после этого делает полный backup
всех файлов... А O_NOATIME флага к open() в линухе почему-то нет :`-(
--- [ZX]
* Origin: Registered Linux User #204355 (2:5030/827.2)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/38332d5ec657.html, оценка из 5, голосов 10
|