Dateien von meiner externen Festplatte werden nach dem Neustart nicht mehr indiziert. Ich muss wieder einsteigen und dann rennen
# updatedb
nach jedem Neustart. Das Problem ist behoben. Bei meinen externen Festplatten dauert es einige Minuten. Kann ich nach dem Neustart die Indizierung für meine externen Geräte beibehalten, damit der Befehl locate meine externen Geräte durchsuchen kann?
EDIT: Pro Anfrage hier sind meine Angaben:
$ 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
user784637
quelle
quelle
cat /etc/updatedb.conf
,mount
,on_ac_power; echo $?
updatedb
geschieht: (1.) Führen Sieupdatedb
mit--verbose
und aus--debug-pruning
. (2.) Sehen Sie sich den Text an, um zu sehen, was indiziert wird und was nicht -> passen Sie Ihren an/etc/updatedb.conf
. Ich hattegrep
für Dateien, die ich brauchte, aber übersprungen wurden. Zum Beispiel musste ich ändern/etc/updatedb.conf
mit: (1.)PRUNE_BIND_MOUNTS = "no"
(2.) entfernennfs nfs4 nfsd autofs
vonPRUNEFS
(3.) entfernen/net
vonPRUNEPATHS
Antworten:
Dateien von Ihrer externen Festplatte werden nicht indiziert, da sie
updatedb
so konfiguriert sind, dass sie nichts darunter indizieren/media
, wo normalerweise externer Speicher bereitgestellt wird. Diese Konfiguration wird in der Datei festgelegt/etc/updatedb.conf
. Speziell der Eintrag/media
in derPRUNEPATHS
Zeile.Einige Ideen, wie Sie
updatedb
Ihr externes Laufwerk indizieren können:1. Montieren Sie das externe Laufwerk unter
/mnt
.Wenn Ihre externe Festplatte dauerhaft gemountet werden soll, empfehle ich, sie so zu konfigurieren, dass sie nicht unter,
/mnt
sondern unter gemountet wird/media
. Dies kann normalerweise durch Bearbeiten erfolgen/etc/fstab
. Suche nach "fstab", um mehr darüber zu erfahren. Zum Bearbeiten benötigen Sie Sudo-Rechte/etc/fstab
.2. Erstellen Sie eine dedizierte Datenbank für Ihre externe Festplatte und fragen Sie diese bei Bedarf ab.
Mit dem folgenden Befehl wird eine dedizierte Datenbank erstellt:
Dadurch wird die Datenbank in der versteckten Datei
.externalharddisk.db
in Ihrem Zuhause erstellt. Sie brauchensudo
für diesen Befehl nicht. Führen Sie denselben Befehl erneut aus, um die Datenbank auf dem neuesten Stand zu halten. Achtung: Wenn Sie diesen Befehl ausführen, während die externe Festplatte nicht gemountet ist,updatedb
werden die Dateien gelöscht und die Datenbank geleert.Sie können ein Skript einrichten, um diese Aufgabe zu automatisieren. Suche nach "cronjob", um zu erfahren, wie das geht. Hinweis: Sie können einen Benutzer cronjob als Benutzer einrichten. Sie benötigen keine sudo-Rechte, um einen Benutzer-Cronjob einzurichten.
Der folgende Befehl fragt die Datenbank ab:
Sie können auch die dedizierte Datenbank und die Standarddatenbank gleichzeitig abfragen:
Der Doppelpunkt am Ende gefolgt von nichts bedeutet, auch in der Standarddatenbank zu suchen.
Sie können einen Alias für eine einfachere Verwendung erstellen. Fügen Sie folgende Zeile ein
.bashrc
:Jetzt können Sie
locate
nur die Standarddatenbank durchsuchen undlocate-external
auch auf Ihrer externen Festplatte suchen.3. Entfernen
/media
vonPRUNEPATHS
Hinweis: Ich empfehle das nicht ! Das liegt an der Funktionsweise
updatedb
. Wird ausgeführt,updatedb
während die externe Festplatte entfernt wird, werden alle Einträge, die auf die externe Festplatte verweisen, aus der Datenbank entfernt. Wird ausgeführt,updatedb
während die externe Festplatte angeschlossen ist, werden Einträge, die auf die externe Festplatte verweisen, erneut hinzugefügt. Daupdatedb
regelmäßig im Hintergrund läuft, kann man nie sicher sein, ob die Dateien von der externen Festplatte aktuell indiziert sind oder nicht.Außerdem: Wenn Sie entfernen
/media
ausPRUNEPATHS
, wird dieses Verhalten auch zu allen anderen externen Speichern Sie montiert haben passieren anwenden , währendupdatedb
die Datenbank aktualisiert.quelle
~/.bashrc
Datei hinzufügen :alias updatedb-external='sudo updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk'
locate-external
ich erwäge, drei Datenbanken in eine--database /mnt/c...
für WSL,--dataabase /mnt/e...
für gemeinsam genutzte WSL + Linux-Skripte und -Dokumente und--database /var/lib/mlocate/mlocate.db
für doppelt gebootetes Ubuntu 16.04 anzuhängen. Das heißt, alle drei Datenbanken in derselben Befehlszeile suchen (natürlich mit einem Alias). Aber bevor ich anfange, wäre es schön zu wissen, ob es funktionieren wird. Kann ich deine Gedanken dazu bekommen?/media
von nicht einverstandenPRUNEPATHS
. Ja, es hat das von Ihnen erwähnte Problem, aber es ist noch schlimmer - Sie werden NIEMALS Dateien auf diesen Laufwerken finden. Es ist, als ob Sie Ihre Finger amputieren, damit sie sich beim Kochen nicht verbrennen (es sei denn, es gibt eine andere naheliegende Lösung, die impliziert wird und die ich nicht sehe).In
updatedb.conf
du hast/media
inPRUNEPATHS
. Sie sollten es entfernen, da Ihre externen Laufwerke dort gemountet zu sein scheinen.quelle
Dies sind weitere Verschönerungen, die Lesmanas Antwort ergänzen sollen
[1] leichte Verschönerung: Darf ich vorschlagen, das -i hinzuzufügen, um sicherzustellen, dass die gesuchte Abfrage kein Problem mehr darstellt : Fügen Sie es zu .bashrc >> hinzu
alias locate-external = 'locate -d ~ / .externalharddisk.db: -i '
[2] In Bezug auf die Aktualisierung beider Datenbanken . die in der Haupt-HD und die neue in der externen; Es lohnt sich wahrscheinlich, der .bashrc einen weiteren Eintrag hinzuzufügen
alias updateALL = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk'
und dann einfach
updateALL
im Terminal ausführen , um beide Datenbanken gleichzeitig zu aktualisierenPS: Vergessen Sie natürlich nicht,
. ~/.bashrc
alles festzumachen , sobald eine neue Zeile in der .bashrc-Datei
externalharddisk
gespeichert wurde* PS³ und Sie können natürlich sowohl update als auch locate in Ihrem .bashrc zusammenführen
alias LO = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk; lokalisiere -d ~ / .externalharddisk.db: -i '
Jetzt müssen Sie nur noch LO eingeben, gefolgt von den gesuchten Begriffen.
quelle