NAME
fsdb —
FFS debugging/editing
tool
SYNOPSIS
DESCRIPTION
fsdb opens
fsname (usually a raw disk
partition) and runs a command loop allowing manipulation of the file system's
inode data. You are prompted to enter a command with “fsdb (inum
X)>” where
X is the currently selected
i-number. The initial selected inode is the root of the filesystem (i-number
2). The command processor uses the
editline(3) library, so you
can use command line editing to reduce typing if desired. When you exit the
command loop, the file system superblock is marked dirty and any buffered
blocks are written to the file system.
The
-d option enables additional debugging output (which comes
primarily from
fsck(8)-derived
code).
The
-F option indicates that
filesystem
is a file system image, rather than a raw character device. It will be
accessed ‘as-is’, and no attempts will be made to read a
disklabel.
The
-n option disables writing to the device, preventing any
changes from being made to the filesystem.
COMMANDS
Besides the built-in
editline(3)
commands,
fsdb supports these commands:
- help
- Print out the list of accepted commands.
- inode
i-number
- Select inode i-number as the new
current inode.
- back
- Revert to the previously current inode.
- clri
i-number
- Clear the inode i-number.
- lookup
name
-
- cd
name
- Find name in the current directory
and make its inode the current inode. Name may be a
multi-component name or may begin with slash to indicate that the root
inode should be used to start the lookup. If some component along the
pathname is not found, the last valid directory encountered is left as the
active inode.
This command is valid only if the starting inode is a directory.
- active
-
- print
- Print out the active inode.
- uplink
- Increment the active inode's link count.
- downlink
- Decrement the active inode's link count.
- linkcount
number
- Set the active inode's link count to
number.
- ls
- List the current inode's directory entries. This command is
valid only if the current inode is a directory.
- blks
- List the current inode's blocks numbers.
- findblk
disk block number ...
- Find the inode(s) owning the specified disk block(s)
number(s). Note that these are not absolute disk blocks numbers, but
offsets from the start of the partition.
- saveblks
filename
- Save the current inode's data into
filename.
- rm
name
-
- del
name
- Remove the entry name from the
current directory inode. This command is valid only if the current inode
is a directory.
- ln
ino name
- Create a link to inode ino under the
name name in the current directory inode. This
command is valid only if the current inode is a directory.
- chinum
dirslot inum
- Change the i-number in directory entry
dirslot to inum.
- chname
dirslot name
- Change the name in directory entry
dirslot to name. This command
cannot expand a directory entry. You can only rename an entry if the name
will fit into the existing directory slot.
- chtype
type
- Change the type of the current inode to
type. type may be one of:
file, dir, socket,
or fifo.
- chmod
mode
- Change the mode bits of the current inode to
mode. You cannot change the file type with this
subcommand; use chtype to do that.
- chflags
flags
- Change the file flags of the current inode to
flags.
- chown
uid
- Change the owner of the current inode to
uid.
- chgrp
gid
- Change the group of the current inode to
gid.
- chgen
gen
- Change the generation number of the current inode to
gen.
- mtime
time
-
- ctime
time
-
- atime
time
- Change the modification, change, or access time
(respectively) on the current inode to time.
Time should be in the format
YYYYMMDDHHMMSS[.nsec] where nsec is an
optional nanosecond specification. If no nanoseconds are specified, the
mtimensec, ctimensec, or
atimensec field will be set to zero.
- quit,
q, exit,
⟨EOF⟩
- Exit the program.
SEE ALSO
editline(3),
fs(5),
clri(8),
fsck(8)
HISTORY
fsdb uses the source code for
fsck(8) to implement most of the
file system manipulation code. The remainder of
fsdb first
appeared in
NetBSD 1.1.
WARNING
Use this tool with extreme caution -- you can damage an FFS file system beyond
what
fsck(8) can repair.
BUGS
Manipulation of “short” symlinks doesn't work (in particular, don't
try changing a symlink's type).
You must specify modes as numbers rather than symbolic names.
There are a bunch of other things that you might want to do which
fsdb doesn't implement.