:py:mod:`dissect.target.filesystems.btrfs` ========================================== .. py:module:: dissect.target.filesystems.btrfs Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.target.filesystems.btrfs.BtrfsFilesystem dissect.target.filesystems.btrfs.BtrfsSubvolumeFilesystem dissect.target.filesystems.btrfs.BtrfsFilesystemEntry .. py:class:: BtrfsFilesystem(fh: Union[BinaryIO, list[BinaryIO]], *args, **kwargs) Bases: :py:obj:`dissect.target.filesystem.Filesystem` Base class for filesystems. .. py:attribute:: __type__ :value: 'btrfs' .. py:attribute:: __multi_volume__ :value: True .. py:method:: iter_subfs() -> Iterator[BtrfsSubvolumeFilesystem] Yield possible sub-filesystems. .. py:method:: open_subvolume(subvol: Optional[str] = None, subvolid: Optional[int] = None) -> BtrfsSubvolumeFilesystem .. py:method:: get(path: str) -> dissect.target.filesystem.FilesystemEntry Retrieve a :class:`FilesystemEntry` from the filesystem. :param path: The path which we want to retrieve. :returns: A :class:`FilesystemEntry` for the path. .. py:class:: BtrfsSubvolumeFilesystem(fs: BtrfsFilesystem, subvol: Optional[str] = None, subvolid: Optional[int] = None) Bases: :py:obj:`dissect.target.filesystem.Filesystem` Base class for filesystems. .. py:attribute:: __type__ :value: 'btrfs' .. py:method:: get(path: str) -> dissect.target.filesystem.FilesystemEntry Retrieve a :class:`FilesystemEntry` from the filesystem. :param path: The path which we want to retrieve. :returns: A :class:`FilesystemEntry` for the path. .. py:class:: BtrfsFilesystemEntry(fs: Filesystem, path: str, entry: Any) Bases: :py:obj:`dissect.target.filesystem.FilesystemEntry` Base class for filesystem entries. .. py:attribute:: fs :type: BtrfsFilesystem .. py:attribute:: entry :type: dissect.btrfs.INode .. py:method:: get(path: str) -> dissect.target.filesystem.FilesystemEntry Retrieve a :class:`FilesystemEntry` relative to this entry. :param path: The path relative to this filesystem entry. :returns: A relative :class:`FilesystemEntry`. .. py:method:: open() -> BinaryIO Open this filesystem entry. :returns: A file-like object. Resolves symlinks when possible .. py:method:: iterdir() -> Iterator[str] Iterate over the contents of a directory, return them as strings. :returns: An iterator of directory entries as path strings. .. py:method:: scandir() -> Iterator[dissect.target.filesystem.FilesystemEntry] Iterate over the contents of a directory, yields :class:`FilesystemEntry`. :returns: An iterator of :class:`FilesystemEntry`. .. py:method:: is_dir(follow_symlinks: bool = True) -> bool Determine if this entry is a directory. :param follow_symlinks: Whether to resolve the entry if it is a symbolic link. :returns: ``True`` if the entry is a directory or a symbolic link to a directory, return ``False`` otherwise. If ``follow_symlinks`` is ``False``, return ``True`` only if the entry is a directory (without following symlinks). .. py:method:: is_file(follow_symlinks: bool = True) -> bool Determine if this entry is a file. :param follow_symlinks: Whether to resolve the entry if it is a symbolic link. :returns: ``True`` if the entry is a file or a symbolic link to a file, return ``False`` otherwise. If ``follow_symlinks`` is ``False``, return ``True`` only if the entry is a file (without following symlinks). .. py:method:: is_symlink() -> bool Determine whether this entry is a symlink. :returns: ``True`` if the entry is a symbolic link, ``False`` otherwise. .. py:method:: readlink() -> str Read the link where this entry points to, return the resulting path as string. If it is a symlink and returns the entry that corresponds to that path. This means it follows the path a link points to, it tries to do it recursively. :returns: The path the link points to. .. py:method:: stat(follow_symlinks: bool = True) -> dissect.target.helpers.fsutil.stat_result Determine the stat information of this entry. If the entry is a symlink and ``follow_symlinks`` is ``True``, it gets resolved, attempting to stat the path where it points to. :param follow_symlinks: Whether to resolve the symbolic link if this entry is a symbolic link. :returns: The stat information of this entry. .. py:method:: lstat() -> dissect.target.helpers.fsutil.stat_result Determine the stat information of this entry, **without** resolving the symlinks. When it detects a symlink, it will stat the information of the symlink, not the path it points to. :returns: The stat information of this entry.