updatedb & temukan masalah perintah - File dari hard drive eksternal tidak lagi diindeks setelah reboot


20

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

1
Sebutkan file konfigurasi dan opsi untuk mount: cat /etc/updatedb.conf, mount,on_ac_power; echo $?
mengatur

akan melakukannya, tidak akan memiliki akses ke mesin linux selama sekitar 8 jam lagi
user784637

Atur, saya telah memperbarui jawaban saya dengan spesifikasi saya, terima kasih atas bantuan Anda =)
user784637

<note for the future> Inilah cara untuk UMUM mencari tahu apa updatedbyang dilakukan: (1.) Jalankan updatedbdengan --verbosedan --debug-pruning. (2.) Lihatlah teks untuk melihat apa yang sedang diindeks dan tidak diindeks -> sesuaikan /etc/updatedb.conf. Saya grepd untuk file yang saya butuhkan tetapi sedang dilewati. Misalnya saya telah memodifikasi /etc/updatedb.confdengan: (1.) PRUNE_BIND_MOUNTS = "no"(2.) hapus nfs nfs4 nfsd autofsdari PRUNEFS(3.) hapus /netdariPRUNEPATHS
Trevor Boyd Smith

Jawaban:


35

File dari harddisk eksternal Anda tidak diindeks karena updatedbdikonfigurasi 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 /mediadi PRUNEPATHSbaris.

Beberapa ide bagaimana Anda dapat membuat updatedbindeks 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, /mntbukan 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:

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

Ini akan membuat database di file tersembunyi .externalharddisk.dbdi rumah Anda. Anda tidak perlu sudountuk perintah itu. Jalankan perintah yang sama lagi untuk menjaga database diperbarui. Carefull: jika Anda menjalankan perintah itu ketika harddisk eksternal tidak dipasang maka updatedbakan 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:

locate -d ~/.externalharddisk.db searchterm

Anda juga dapat meminta database khusus dan database default secara bersamaan:

locate -d ~/.externalharddisk.db: searchterm

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:

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

Sekarang Anda dapat menggunakan locatehanya untuk mencari basis data default dan locate-externaljuga untuk mencari di harddisk eksternal Anda.

3. Hapus /mediadariPRUNEPATHS

Catatan: Saya tidak merekomendasikan ini ! Ini karena cara updatedbkerjanya. Jika updatedbberjalan saat harddisk eksternal dihapus maka semua entri yang menunjuk ke harddisk eksternal akan dihapus dari database. Jika updatedbberjalan saat harddisk eksternal terhubung, entri yang menunjuk ke harddisk eksternal akan ditambahkan lagi. Karena updatedbberjalan 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 /mediadari PRUNEPATHS, perilaku ini juga akan berlaku untuk penyimpanan eksternal lain yang kebetulan Anda pasang ketika updatedbsedang memperbarui database.


2
Anda juga dapat menambahkan alias ini ke ~/.bashrcfile Anda :alias updatedb-external='sudo updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk'
rubo77

+1 untuk Anda dan OP. Namun alih-alih perintah DB eksternal yang terpisah 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.dbuntuk 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?
WinEunuuchs2Unix

Saya tidak setuju dengan argumen untuk menghapus /mediadari PRUNEPATHS. 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).
Sridhar Sarnobat

2

Dalam updatedb.confAnda memiliki /mediadi PRUNEPATHS. Anda harus menghapusnya, karena drive eksternal Anda tampaknya sudah terpasang di sana.


2

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 updateALLdi terminal untuk memperbarui kedua database sekaligus

PS: tentu saja jangan lupa menjalankan . ~/.bashrcuntuk mengencangkan semuanya begitu sebuah baris baru disimpan dalam .bashrc
PS²: dan tentu saja juga externalharddiskdi 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'


+1 untuk pembaruan urutan dan kemudian cari
LMSingh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.