updatedb и определяют местоположение проблемы команды - Файлы от внешнего жесткого диска больше не индексируются после перезагрузки

Файлы от моего внешнего жесткого диска больше не индексируются после перезагрузки. Я должен повторно смонтироваться и затем работать

# updatedb

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

Править: На Запрос вот мои спецификации:

$ cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"

# mount
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/me/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=me)
/dev/sdb1 on /media/me type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdd1 on /media/Little Boy type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sde1 on /media/Fat Man type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

# on_ac_power; echo $?
255
24
задан 7 September 2011 в 00:05

3 ответа

Файлы с вашего внешнего жесткого диска не индексируются, так как updateb настроен на то, чтобы не индексировать ничего в разделе /media, где обычно монтируется внешнее устройство хранения данных. Эта конфигурация установлена в файле /etc/updatedb.conf. В частности, запись /media в строке PRUNEPATHS.

Некоторые идеи, как сделать updateb для индексации внешнего диска:

1. Установите внешний диск в положение /mnt.

Если предполагается, что ваш внешний жесткий диск установлен постоянно /mnt, то я рекомендую настроить его таким образом, чтобы он был установлен в положение /mnt, а не в положение /media. Это обычно можно сделать путем редактирования /etc/fstab. Найдите "fstab", чтобы узнать об этом. Для редактирования /etc/fstab вам понадобятся sudo права.

2. Создайте специальную базу данных для вашего внешнего жесткого диска и запросите ее по требованию.

Следующая команда создаст специальную базу данных:

updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk

Это создаст базу данных в скрытом файле .externalharddisk.db в вашем доме. Для этой команды не требуется sudo. Выполните ту же самую команду еще раз, чтобы поддерживать БД в обновленном состоянии. Осторожно: если вы запустите эту команду, пока внешний жёсткий диск не смонтирован, то updateb подумает, что файлы удалены, и опустошит БД.

Вы можете настроить скрипт для автоматизации этой задачи. Найдите "cronjob", чтобы узнать, как это сделать. Примечание: вы можете настроить "cronjob" пользователя как пользователя. Вам не нужны sudo права, чтобы настроить задание пользователя.

Следующая команда сделает запрос к БД:

locate -d ~/.externalharddisk.db searchterm

Вы можете одновременно сделать запрос к выделенной БД и к БД по умолчанию:

locate -d ~/.externalharddisk.db: searchterm

Двоеточие в конце, за которым ничего не следует, чтобы также искать в БД по умолчанию.

Вы можете сделать псевдоним для более простого использования. Поместите следующую строку в ваш .bashrc:

alias locate-external='locate -d ~/.externalharddisk.db:'

Теперь вы можете использовать locate для поиска только в базе данных по умолчанию и locate-external для поиска также и во внешнем жестком диске.

3. Удалите /медиа из PRUNEPATHS

Примечание: Я не рекомендую это ! Это связано с тем, как работает /обновлениеb. Если updateb работает во время удаления внешнего жесткого диска, то все записи, указывающие на внешний жесткий диск, будут удалены из базы данных. Если updateb работает во время подключения внешнего жёсткого диска, то записи, указывающие на внешний жёсткий диск, будут добавлены снова. Так как updateb работает в фоновом режиме, вы никогда не можете быть уверены, что файлы с внешнего жёсткого диска в данный момент проиндексированы или нет.

Более того: если вы удалите /медиа из PRUNEPATHS, это поведение также будет применяться к любому другому внешнему хранилищу, которое вы случайно смонтировали, пока updateb обновляет базу данных.

41
ответ дан 23 November 2019 в 01:49

В updateb.conf в PRUNEPATHS есть /средства информации . Вам следует удалить его, так как ваши внешние диски, кажется, установлены там.

2
ответ дан 23 November 2019 в 01:49

Это дополнительные украшения, которые нужно добавить к ответу Лесмана

[1] небольшое приукрашивание: могу ли я предложить добавить -i к , чтобы убедиться, что поисковый запрос больше не является проблемой : чтобы добавить к .bashrc >>

псевдоним locate-external = 'locate -d ~ / .externalharddisk.db: -i '

[2] Что касается обновления обе базы данных ; один в основном HD и новый во внешнем; вероятно, стоит добавить еще одну запись в псевдоним .bashrc

updateALL = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk '

, а затем просто запустить updateALL в терминале, чтобы обновить обе базы сразу

PS: конечно, не забудьте запустить . ~ / .bashrc , чтобы закрепить все это после сохранения новой строки в .bashrc
PS²: и, конечно же, externalharddisk во всех строках выше заменяется именем вашего внешнее имя HD, т.е. / media / YOURHDNAME

* PS³, и вы, конечно, можете объединить как update, так и найти в вашем .bashrc

псевдоним LO = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db - U / media / externalharddisk; найдите -d ~ / .externalharddisk.db: -i '

, поэтому теперь все, что вам нужно для обновления и поиска, - это ввести LO', а затем слова, которые вы ищете '

2
ответ дан 23 November 2019 в 01:49

Другие вопросы по тегам:

Похожие вопросы: