Los archivos de mi disco duro externo ya no se indexan después de reiniciar. Tengo que volver a montar y luego ejecutar
# updatedb
después de cada reinicio. El problema se actualizab tarda unos minutos en mis discos duros externos. ¿Hay alguna forma de que pueda retener la indexación de mis externos después de reiniciar para que el comando de localización pueda buscar a través de mis externos?
EDITAR: Por solicitud aquí están mis especificaciones:
$ 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
command-line
updatedb
locate
usuario784637
fuente
fuente
cat /etc/updatedb.conf
,mount
,on_ac_power; echo $?
updatedb
está haciendo: (1.) Ejecutarupdatedb
con--verbose
y--debug-pruning
. (2.) Mire el texto para ver qué se indexa y no se indexa -> ajuste su/etc/updatedb.conf
. Igrep
D para los archivos que necesitaba, pero fueron saltadas. Por ejemplo, tuve que modificar/etc/updatedb.conf
con: (1.)PRUNE_BIND_MOUNTS = "no"
(2.) eliminarnfs nfs4 nfsd autofs
dePRUNEFS
(3.) eliminar/net
dePRUNEPATHS
Respuestas:
Los archivos de su disco duro externo no están indexados porque
updatedb
está configurado para no indexar nada debajo/media
, que es donde generalmente se monta el almacenamiento externo. Esta configuración se establece en el archivo/etc/updatedb.conf
. Específicamente la entrada/media
en laPRUNEPATHS
línea.Algunas ideas sobre cómo puede hacer
updatedb
para indexar su unidad externa:1. Monte la unidad externa debajo
/mnt
.Si se supone que su disco duro externo debe estar montado permanentemente , le sugiero que lo configure para que se monte debajo en
/mnt
lugar de debajo/media
. Eso generalmente se puede hacer editando/etc/fstab
. Busque "fstab" para aprender sobre eso. Necesitarás derechos de sudo para editar/etc/fstab
.2. Cree una base de datos dedicada para su disco duro externo y consulte a pedido.
El siguiente comando creará una base de datos dedicada:
Esto creará la base de datos en el archivo oculto
.externalharddisk.db
en su hogar. No necesitassudo
ese comando. Ejecute el mismo comando nuevamente para mantener actualizada la base de datos. Cuidado: si ejecuta ese comando mientras el disco duro externo no está montadoupdatedb
, pensará que los archivos se eliminan y vaciará la base de datos.Puede configurar un script para automatizar esa tarea. Busque "cronjob" para aprender cómo hacerlo. Nota: puede configurar un cronjob de usuario como usuario. No necesita derechos de sudo para configurar un cronjob de usuario.
El siguiente comando consultará la base de datos:
También puede consultar la base de datos dedicada y la base de datos predeterminada al mismo tiempo:
Los dos puntos al final seguidos de nada significa también buscar en la base de datos predeterminada.
Puede hacer un alias para un uso más fácil. Ponga la siguiente línea en su
.bashrc
:Ahora puede usar
locate
para buscar solo en la base de datos predeterminada ylocate-external
también para buscar en su disco duro externo.3. Eliminar
/media
dePRUNEPATHS
Nota: ¡No recomiendo esto ! Esto se debe a la forma en que
updatedb
funciona. Si seupdatedb
ejecuta mientras se elimina el disco duro externo, todas las entradas que apuntan al disco duro externo se eliminarán de la base de datos. Si seupdatedb
ejecuta mientras el disco duro externo está conectado, las entradas que apuntan al disco duro externo se agregarán nuevamente. Dado queupdatedb
se ejecuta regularmente en segundo plano, nunca puede estar seguro de si los archivos del disco duro externo están indexados o no.Además: si se quita
/media
dePRUNEPATHS
, este comportamiento también se aplican a cualquier otro almacenamiento externo le sucede que tiene montada mientrasupdatedb
se actualiza la base de datos.fuente
~/.bashrc
archivo:alias updatedb-external='sudo updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk'
locate-external
, es decir , estoy considerando agregar tres bases de datos en una con--database /mnt/c...
WSL,--dataabase /mnt/e...
con scripts y documentos compartidos WSL + Linux y--database /var/lib/mlocate/mlocate.db
Ubuntu 16.04 con arranque dual. es decir, las tres bases de datos en la misma línea de comando de localización (con un alias, por supuesto). Pero antes de comenzar, sería bueno saber si funcionará. ¿Puedo pensar en eso?/media
dePRUNEPATHS
. Si bien tiene el problema que mencionó, excluirlo por completo es aún peor: NUNCA ubicará archivos en esas unidades. Es como amputar tus dedos para que no se quemen mientras cocinas (a menos que haya otra solución obvia implícita que no estoy viendo).En
updatedb.conf
tienes/media
enPRUNEPATHS
. Debe eliminarlo, ya que sus unidades externas parecen estar montadas allí.fuente
Estos son otros adornos que se agregarán a la respuesta de Lesmana
[1] ligero adorno: ¿puedo sugerir que agregue -i para asegurarme de que el caso de la consulta buscada ya no sea un problema : así que agregue a .bashrc >>
alias localizar-externo = 'localizar -d ~ / .externalharddisk.db: -i '
[2] En cuanto a la actualización de ambas bases de datos ; el que está en el HD principal y el nuevo en el externo; probablemente valga la pena agregar una entrada más al .bashrc
alias updateALL = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk'
y luego simplemente ejecutar
updateALL
en la terminal para actualizar ambas bases de datos a la vezPD: por supuesto, no olvide ejecutar
. ~/.bashrc
para reafirmar todo una vez que se guarda una nueva línea en el .bashrcPS²: y, por supuesto,
externalharddisk
en todas las líneas anteriores se reemplaza por el nombre de su nombre HD externo, es decir, / media / YOURHDNAME* PS³ y, por supuesto, puedes combinar tanto la actualización como la ubicación en tu .bashrc
alias LO = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk; localizar -d ~ / .externalharddisk.db: -i '
así que ahora todo lo que necesita actualizar y buscar es ingresar LO 'seguido de los términos que busca'
fuente