FSDB(8)

名称
fsdb - FFS デバッグ/編集ツール

書式
fsdb [-d] [-f] [-r] fsname

解説
fsdb ユーティリティは fsname (通常は raw ディスクパーティション) を open し、そのファイルシステムの inode データを操作するためのコマンドを受け付けます。 コマンドは fsdb (inum X)> のプロンプトに対して入力します。ここでの X は現在選択されている i-number となります。 最初に選択されている inode はファイルシステムのルート (i-number 2) となります。 コマンドプロセッサには editline(3) ライブラリを使用しており、コマンド行を編集することによってタイピングの 量を減らすことができます。 コマンドループから抜けて終了する時には、ファイルシステムのスーパブロック が dirty とマークされ、バッファリングされているブロックがあれば ファイルシステムに書き込まれます。

以下のオプションを使用可能です:

-d  デバッグ情報 (元は fsck(8) のコードに由来するもの) を出力します。

-f  歴史的な理由により残されているもので、特に意味は持ちません。

-r  ファイルシステムを読み取り専用でオープンし、 書き込みを行うコマンドを抑止します。

コマンド
組み込みの editline(3) のコマンドの他に fsdb は以下のコマンドをサポートしています:

help
    入力できるコマンドのリストを表示します。

inode i-number
    新しい現在の inode として inode i-number を選択します。

back
    以前の inode に戻ります。

clri i-number
    i-number をクリアします。

lookup name
cd name
    name を現在のディレクトリの中で探し、その inode を現在の inode に設定します。 name はマルチコンポーネントの名前か、スラッシュで始めて 検索をルートの inode から始めることを指定できます。 パス名の中のコンポーネントが見つからない場合、 最後に有効であったディレクトリがアクティブな inode として使われます。 このコマンドは開始する inode がディレクトリの場合のみ有効です。

active
print
    アクティブな inode を表示します。

blocks
    アクティブな inode のブロックリストを表示します。 大きなファイルに対しては表示出力が長くなることに注意してください。 すべての間接ブロックポインタもまた表示されるからです。
uplink
    アクティブな inode のリンク数をインクリメントします。

downlink
    アクティブな inode のリンク数をデクリメントします。

linkcount number
    アクティブな inode のリンク数を number に設定します。

ls  現在の inode のディレクトリエントリをリストします。 このコマンドは現在の inode がディレクトリである場合のみ有効です。

rm name
del name
    現在のディレクトリ inode からエントリ name を取り除きます。 このコマンドは現在の inode がディレクトリである場合のみ有効です。

ln ino name
    現在のディレクトリ inode に inode ino へのリンクを name の名前で作成します。 このコマンドは現在の inode がディレクトリである場合のみ有効です。

chinum dirslot inum
    ディレクトリエントリ dirslot 中の i-number を inum に変更します。

chname dirslot name
    ディレクトリエントリ dirslot 中の名前を name に変更します。 このコマンドではディレクトリエントリを拡張することはできません。 名前が現在存在するディレクトリスロットに収まる場合にのみ、 エントリの名前の変更が可能です。

chtype type
    現在の inode のタイプを type に変更します。 type には file, dir, socket, fifo のいずれかが指定できます。

chmod mode
    現在の inode のモードビットを mode に変更します。 このサブコマンドではファイルのタイプを変更することはできません。その場 合は chtype を使ってください。

chflags flags
    現在の inode のファイルフラグを flags に変更します。

chown uid
    現在の inode の所有者を uid に変更します。

chgrp gid
    現在の inode のグループを gid に変更します。

chgen gen
    現在の inode の世代番号 (generation number) を gen に変更します。

mtime time
ctime time
atime time
    それぞれ、現在の inode の修正時間、変更時間、アクセス時間を time に変更します。 time は YYYYMMDDHHMMSS[.nsec] の形式でなければなりません。ここで、 nsec はオプションで指定できるナノ秒の値となります。 もし、ナノ秒が指定されていないと、 mtimensec, ctimensec, atimensec のそれぞれのフィールドには 0 がセットされます。

quit, q, exit, <EOF>
    プログラムを終了します。

関連項目
editline(3), fs(5), clri(8), fsck(8)

バグ
``short'' のシンボリックリンクの操作は動作しません。(特に、 シンボリックリンクのタイプは変更しないでください。)

モードはシンボル名ではなく数字で指定してください。

多分 fsdb に実装されていないことで、もっとやりたいことが沢山あるでしょう。

歴史
fsdb ユーティリティは fsck(8) のソースコードを使ってファイルシステムの操作のコードのほとんどを実装しています。 fsdb の残りの部分は、最初 NetBSD において John T. Kohl によって書かれました。

FreeBSD への移植は Peter Wemm によって行われました。

警告
このツールは最大限に注意を払って使って下さい。 fsck(8) を使っても修復できないほど FFS ファイルシステムを壊す恐れがあります。