updatedbコマンドはlocateのデータベースファイルを作成するコマンドになります。このコマンドには基本的に管理者権限が必要になります。
しかし、オプションによっては管理者権限を用いずにプライベートのlocateデータベースファイルを作成することもできます。
目次
データベースファイルをデフォルト以外で出力
updateコマンドは、通常、/var/lib/mlocate/mlocate.dbにlocateのデータベースファイルを作成します。
-oオプションを用いると出力されるデータベースファイルの場所を変更できます。
また、最初のデータベースファイルの作成は、スキャンするディレクトリの数によってはそれなりの時間がかかります。
1 2 3 4 5 6 |
$ ls dir1 $ $ sudo updatedb -o mydbfile.db $ ls dir1 mydbfile.db |
別のディレクトリをルートにしてスキャン
-Uオプションを用いると別のディレクトリをルートディレクトリとしてスキャンを行い、locateのデータベースファイルを作成できます。
さらに、-vオプションをつけると冗長モードで作成されるデータベースの内容を出力できます。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo updatedb -v -U dir1 -o mydbfile.db /home/ubuntu/test_updatedb/dir1/dir2 /home/ubuntu/test_updatedb/dir1/file1.txt /home/ubuntu/test_updatedb/dir1/file2.txt /home/ubuntu/test_updatedb/dir1/file3.txt /home/ubuntu/test_updatedb/dir1/dir2/file1.txt /home/ubuntu/test_updatedb/dir1/dir2/file2.txt /home/ubuntu/test_updatedb/dir1/dir2/file3.txt $ $ ls dir1 mydbfile.db |
locateコマンドでデータベースファイルを指定して利用
locateコマンドでは通常、/var/lib/mlocate/mlocate.dbからファイル検索を行います。
locateコマンドでこのデフォルトのデータベースファイルを変更するには-dオプションを用います。
1 2 3 4 5 6 7 8 9 10 11 |
$ ls dir1 mydbfile.db $ locate -d mydbfile.db '*' /home/ubuntu/test_updatedb/dir1 /home/ubuntu/test_updatedb/dir1/dir2 /home/ubuntu/test_updatedb/dir1/file1.txt /home/ubuntu/test_updatedb/dir1/file2.txt /home/ubuntu/test_updatedb/dir1/file3.txt /home/ubuntu/test_updatedb/dir1/dir2/file1.txt /home/ubuntu/test_updatedb/dir1/dir2/file2.txt /home/ubuntu/test_updatedb/dir1/dir2/file3.txt |
管理者権限なしでプライベートなlocateデータベースファイルの作成
-l(--require-visibility)オプションを0(またはno)にすることで管理者権限なしでプライベートなlocateデータベースファイルを作成できます。
-lオプションはファイルの可視性の権限をチェックするオプションになります。デフォルトでは1(またはyes)になっています。このフラグがあるときに作成したデータベースファイルでlocateコマンドを実行したユーザは可視性の権限がないファイルについては表示が行われず、見ることができません。
しかし、-lオプションを0(またはno)にして作成したデータベースファイルだとlocateコマンドを実行したユーザはファイルの可視性の権限がなくてもファイルの存在が分かるようになるというセキュリティ上の問題があるという注意が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ ls dir1 $ updatedb -l 0 -U dir1 -o mydbfile.db $ locate -d mydbfile.db '*' /home/ubuntu/test_updatedb/dir1 /home/ubuntu/test_updatedb/dir1/dir2 /home/ubuntu/test_updatedb/dir1/file1.txt /home/ubuntu/test_updatedb/dir1/file2.txt /home/ubuntu/test_updatedb/dir1/file3.txt /home/ubuntu/test_updatedb/dir1/dir2/file1.txt /home/ubuntu/test_updatedb/dir1/dir2/file2.txt /home/ubuntu/test_updatedb/dir1/dir2/file3.txt |