Як змусити mlocate лише індексувати певні каталоги?


23

Я хотів би використовувати mlocate на моєму сервері Ubuntu, але тільки для індексації певних каталогів (наприклад, /homeта /data, але не все під /). Однак стандартна конфігурація mlocate працює навпаки; ви вказуєте шляхи, які потрібно видалити (з PRUNE_PATHS).

Чи є якийсь простий спосіб цього досягти, чи якась така утиліта, яка зробить те, що я хочу? (зауважте: він повинен підтримувати такий індекс, як mlocate, наприклад , findце не прийнятно) Дякую.

Відповіді:


16

Ви можете скористатися параметром -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-о записує у вихідний файл

-l 0 означає, що ви можете прочитати його, інакше він доступний лише для пошуку

Потім ви можете використовувати його так:

locate -d /home/user/databasefile Dylan

-d встановлює шлях до бази даних

Щоб використовувати mlocate з більш ніж однією кореневою директорією, просто створіть два файли бази даних та використовуйте locate з двома параметрами бази даних, подібними до цього:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Щоб підсумувати це і відповісти на запитання більш конкретно:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan

Оголошення, оскільки це часткова відповідь. Однак це дозволяє використовувати лише білий шлях у один список. Моє запитання було спеціально про те, як додати до списку більше одного шляху.
Ендрю Фер’є

1
Удосконалена відповідь та для легшого поводження пропоную створити псевдонім
Janghou

гарна відповідь! Я не розумів, що ви можете паралельно шукати у двох базах даних, дякую за уточнення. Я відзначу це прийнятим, якщо не надійде краща відповідь!
Ендрю Фер’є

Чи є updatedb -l 0 -U /home/user/musicрекурсивним? Здається, це не в моєму випадку
Гая

22

Відредагуйте файл /etc/updatedb.conf

Налаштуйте PRUNEPATHSз каталогами, які НЕ хочете шукати

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Список розділених пробілом імен шляхів каталогів, які не слід сканувати оновленими. Кожне ім'я контуру повинно бути точно в тому вигляді, у якому каталог буде повідомлено за допомогою locate. За замовчуванням жодні шляхи не пропускаються.

Зауважте, що всю вищевказану інформацію про конфігурацію можна також змінити або оновити за допомогою параметрів командного рядка до утиліти updatedb.


Ні, це абсолютно протилежне тому, що я хочу. Це індексує все, крім цих каталогів.
Ендрю Фер’є

Ви можете встановити PRUNEPATHS з усім, крім ваших каталогів. Таким чином він скануватиме лише ваші каталоги.
LnxSlck

Добре, дякую за уточнюючу редакцію. Це трохи непрактично, тому що, додаючи підкаталоги поряд із каталогами, які я хочу індексувати, я повинен пам'ятати, щоб додати їх до PRUNEPATHS. Однак це спрацювало б. Дякую за пропозицію.
Ендрю Фер’є

Так, я знаю, але я не можу знайти багато інформації про mlocate, щоб це зробити. Ви не можете використовувати щось на кшталт знахідки?
LnxSlck

Ні, у мене дуже багато даних, тому важливо, щоб вони були індексовані. Пояснили питання.
Ендрю Фер’є

1

Я знайшов ще щось, що можна спробувати:

  1. Швидкий пошук - "Отже, мій SearchTool використовує інший спосіб: він використовує команду" ls "для переліку вмісту шуканої папки, а потім здійснює пошук на цьому виході. Цей шлях швидкості пошуку дуже швидкий (за винятком першого разу, коли він повинен зробити 'ls' вихід). "

Не дуже впевнений в індексації.

  1. Використовуйте інструмент- трекер-гуй
  2. Досить кульгаве рішення sudo find "розмістити тут свої пошукові каталоги"> files.list grep 'filename' files.list

Намагайтеся не додавати кілька відповідей. При необхідності відредагуйте наявну відповідь і включіть додаткову інформацію. Спасибі.
jokerdino

Так, я зроблю це
LnxSlck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.