再起動後に、外付けハードドライブのファイルのインデックスが作成されなくなりました。再マウントしてから実行する必要があります
# updatedb
再起動するたびに。問題はupdatedbです私の外付けハードドライブのために数分かかります。再起動後に外部のインデックスを保持して、locateコマンドで外部を検索できるようにする方法はありますか?
編集:リクエストごとにここに私の仕様があります:
$ 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
updatedb
は外部ストレージが通常マウントされる/media
の下に何もインデックスしないように設定されているため、外部ハードディスクのファイルはインデックスされません。この構成は、ファイル/etc/updatedb.conf
で設定されます。具体的には、PRUNEPATHS
行の/media
エントリ。
updatedb
を作成して外付けドライブのインデックスを作成する方法のアイデア:
/mnt
の下に外部ドライブをマウントします。外付けハードディスクが永続的にマウントされるである場合、/mnt
の下ではなく/media
の下にマウントされるように構成することをお勧めします。これは通常、/etc/fstab
を編集することで実行できます。 「fstab」を検索して、それについて学びます。 /etc/fstab
を編集するには、Sudo権限が必要です。
次のコマンドは、専用のデータベースを作成します。
updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk
これにより、自宅の隠しファイル.externalharddisk.db
にデータベースが作成されます。そのコマンドにSudo
は必要ありません。同じコマンドを再度実行して、データベースを最新の状態に保ちます。注意:外部ハードディスクがマウントされていない状態でコマンドを実行すると、updatedb
はファイルが削除されたと判断し、データベースを空にします。
そのタスクを自動化するスクリプトを設定できます。 「cronjob」を検索して、その方法を学習します。注:ユーザーcronjobをユーザーとして設定できます。ユーザーcronjobをセットアップするのにSudo権限は必要ありません。
次のコマンドは、データベースを照会します。
locate -d ~/.externalharddisk.db searchterm
また、専用データベースとデフォルトデータベースを同時に照会することもできます。
locate -d ~/.externalharddisk.db: searchterm
末尾のコロンの後に何も続かない場合は、デフォルトのデータベースも検索することを意味します。
エイリアスを作成して、使いやすくすることができます。 .bashrc
に次の行を追加します。
alias locate-external='locate -d ~/.externalharddisk.db:'
これで、locate
を使用してデフォルトのデータベースのみを検索し、locate-external
を使用して外部ハードディスクも検索できます。
PRUNEPATHS
から/media
を削除します注:これはお勧めしません!これは、updatedb
の動作方法によるものです。外部ハードディスクが削除されているときにupdatedb
が実行されると、外部ハードディスクを指すすべてのエントリがデータベースから削除されます。外部ハードディスクが接続されているときにupdatedb
が実行されると、外部ハードディスクを指すエントリが再び追加されます。 updatedb
はバックグラウンドで定期的に実行されているため、外部ハードディスクのファイルに現在インデックスが作成されているかどうかを確認することはできません。
さらに:PRUNEPATHS
から/media
を削除すると、この動作はupdatedb
がデータベースを更新している間にたまたまマウントした他の外部ストレージにも適用されます。
updatedb.conf
には、PRUNEPATHS
に/media
があります。外部ドライブがそこにマウントされているように見えるため、削除する必要があります。
これらはレスマナの答えに追加されるさらなる装飾です
[1]わずかな装飾:-iを検索されたクエリのケースが問題ではなくなったことを確認する:を追加することをお勧めします。
エイリアスLocate-external = 'locate -d〜/ .externalharddisk.db:-i'
[2] 両方のデータベースの更新;に関しては、メインHDのものと外部HDの新しいもの。おそらく.bashrcにもう1つのエントリを追加する価値があります
エイリアスupdateALL = 'Sudo updatedb && updatedb -l 0 -o〜/ .externalharddisk.db -U/media/externalharddisk'
その後、ターミナルでupdateALL
を実行して、両方のデータベースを一度に更新します
PS:もちろん、新しい行が.bashrcに保存されたら、. ~/.bashrc
を実行してすべてを確定することを忘れないでください
PS²:そしてもちろん、上記のすべての行のexternalharddisk
は、外部のHD名、つまり/ media/YOURHDNAMEに置き換えられます
*PS³と、もちろん更新とあなたの.bashrcの両方を統合することができます
エイリアスLO = 'Sudo updatedb && updatedb -l 0 -o〜/ .externalharddisk.db -U/media/externalharddisk; -d〜/ .externalharddisk.dbを見つけます:-i '
これで、更新して検索する必要があるのはLOを入力することです(「検索語が続く」)