File dari hard drive eksternal saya tidak lagi diindeks setelah reboot. Saya harus me-remount lalu menjalankan
# updatedb
setelah setiap reboot. Masalahnya diperbaruib butuh beberapa menit untuk hard drive eksternal saya. Apakah ada cara saya bisa mempertahankan pengindeksan untuk eksternal saya setelah saya reboot sehingga perintah loc dapat mencari melalui eksternal saya?
EDIT: Per Permintaan di sini adalah spesifikasi saya:
$ 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
pengguna784637
sumber
sumber
cat /etc/updatedb.conf
,mount
,on_ac_power; echo $?
updatedb
yang dilakukan: (1.) Jalankanupdatedb
dengan--verbose
dan--debug-pruning
. (2.) Lihatlah teks untuk melihat apa yang sedang diindeks dan tidak diindeks -> sesuaikan/etc/updatedb.conf
. Sayagrep
d untuk file yang saya butuhkan tetapi sedang dilewati. Misalnya saya telah memodifikasi/etc/updatedb.conf
dengan: (1.)PRUNE_BIND_MOUNTS = "no"
(2.) hapusnfs nfs4 nfsd autofs
dariPRUNEFS
(3.) hapus/net
dariPRUNEPATHS
Jawaban:
File dari harddisk eksternal Anda tidak diindeks karena
updatedb
dikonfigurasi untuk tidak mengindeks apa pun di bawah/media
, yang merupakan tempat penyimpanan eksternal biasanya dipasang. Konfigurasi ini diatur dalam file/etc/updatedb.conf
. Khususnya entri/media
diPRUNEPATHS
baris.Beberapa ide bagaimana Anda dapat membuat
updatedb
indeks drive eksternal Anda:1. Pasang drive eksternal ke bawah
/mnt
.Jika harddisk eksternal Anda seharusnya dipasang secara permanen maka saya sarankan untuk mengkonfigurasinya sehingga ia dipasang di bawah,
/mnt
bukan di bawah/media
. Itu biasanya bisa dilakukan dengan mengedit/etc/fstab
. Cari "fstab" untuk mempelajari tentang itu. Anda membutuhkan hak sudo untuk diedit/etc/fstab
.2. Buat database khusus untuk harddisk eksternal Anda dan permintaan yang sesuai permintaan.
Perintah berikut akan membuat database khusus:
Ini akan membuat database di file tersembunyi
.externalharddisk.db
di rumah Anda. Anda tidak perlusudo
untuk perintah itu. Jalankan perintah yang sama lagi untuk menjaga database diperbarui. Carefull: jika Anda menjalankan perintah itu ketika harddisk eksternal tidak dipasang makaupdatedb
akan berpikir file dihapus dan akan mengosongkan basis data.Anda dapat mengatur skrip untuk mengotomatiskan tugas itu. Cari "cronjob" untuk mempelajari cara melakukannya. Catatan: Anda dapat mengatur cronjob pengguna sebagai pengguna. Anda tidak perlu hak sudo untuk mengatur cronjob pengguna.
Perintah berikut akan menanyakan basis data:
Anda juga dapat meminta database khusus dan database default secara bersamaan:
Tanda titik dua di akhir diikuti dengan tidak ada artinya juga mencari di database default.
Anda dapat membuat alias untuk penggunaan yang lebih mudah. Masukkan baris berikut di
.bashrc
:Sekarang Anda dapat menggunakan
locate
hanya untuk mencari basis data default danlocate-external
juga untuk mencari di harddisk eksternal Anda.3. Hapus
/media
dariPRUNEPATHS
Catatan: Saya tidak merekomendasikan ini ! Ini karena cara
updatedb
kerjanya. Jikaupdatedb
berjalan saat harddisk eksternal dihapus maka semua entri yang menunjuk ke harddisk eksternal akan dihapus dari database. Jikaupdatedb
berjalan saat harddisk eksternal terhubung, entri yang menunjuk ke harddisk eksternal akan ditambahkan lagi. Karenaupdatedb
berjalan secara teratur di latar belakang Anda tidak pernah dapat memastikan apakah file dari harddisk eksternal saat ini diindeks atau tidak.Lebih lanjut: jika Anda menghapus
/media
dariPRUNEPATHS
, perilaku ini juga akan berlaku untuk penyimpanan eksternal lain yang kebetulan Anda pasang ketikaupdatedb
sedang memperbarui database.sumber
~/.bashrc
file Anda :alias updatedb-external='sudo updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk'
locate-external
, saya sedang mempertimbangkan menambahkan tiga database menjadi satu dengan--database /mnt/c...
untuk WSL,--dataabase /mnt/e...
untuk WSL + Linux berbagi skrip & dokumen dan--database /var/lib/mlocate/mlocate.db
untuk Ubuntu 16.04 dual-boot. yaitu Ketiga basis data pada baris perintah cari yang sama (dengan alias tentu saja). Tetapi sebelum saya mulai, akan baik untuk mengetahui apakah itu akan berhasil. Bisakah saya mendapatkan pemikiran Anda tentang itu?/media
dariPRUNEPATHS
. Meskipun ya memiliki masalah yang Anda sebutkan, mengecualikannya sepenuhnya bahkan lebih buruk - Anda tidak akan pernah menemukan file di drive tersebut. Ini seperti mengamputasi jari-jari Anda sehingga mereka tidak terbakar saat memasak (kecuali ada solusi jelas lain yang tersirat yang tidak saya lihat).Dalam
updatedb.conf
Anda memiliki/media
diPRUNEPATHS
. Anda harus menghapusnya, karena drive eksternal Anda tampaknya sudah terpasang di sana.sumber
Ini adalah hiasan tambahan yang ditambahkan pada jawaban Lesmana
[1] sedikit hiasan: bolehkah saya menyarankan menambahkan -i untuk memastikan kasus permintaan yang dicari tidak lagi menjadi masalah : jadi untuk menambah .bashrc >>
alias loc-external = 'loc -d ~ / .externalharddisk.db: -i '
[2] Mengenai pembaruan kedua database ; yang di HD utama dan yang baru di eksternal; mungkin perlu menambahkan satu entri lagi ke .bashrc
alias updateALL = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk'
dan kemudian jalankan
updateALL
di terminal untuk memperbarui kedua database sekaligusPS: tentu saja jangan lupa menjalankan
. ~/.bashrc
untuk mengencangkan semuanya begitu sebuah baris baru disimpan dalam .bashrcPS²: dan tentu saja juga
externalharddisk
di semua baris di atas diganti dengan nama nama HD eksternal Anda yaitu / media / YOURHDNAME* PS³ dan tentu saja Anda dapat mengonfigurasi pembaruan dan mencari di .bashrc Anda
alias LO = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk; temukan -d ~ / .externalharddisk.db: -i '
jadi sekarang yang perlu Anda perbarui dan cari adalah memasukkan LO 'diikuti oleh istilah yang Anda cari'
sumber