Concepts

FsPulse is centered around tracking and understanding the state of the file system over time. The core entities in FsPulse — roots, scans, items, and changes — represent a layered model of this information.


Scans

Scans are the units of work performed by FsPulse. A scan is performed on a file system tree specified by a path. A scan deeply traverses the specified path and its children, recording information on the files and directories discovered. The details of scanning are explained in Scanning.


Root

A root is the starting point for a scan. It represents a specific path on the file system that you explicitly tell FsPulse to track.

Each root is stored persistently in the database, and every scan you perform refers back to a root.

  • Paths are stored as absolute paths.
  • Each root has a unique ID.
  • You can scan a root multiple times over time.

Scan

A scan is a snapshot of a root directory at a specific point in time.

Each scan records metadata about:

  • The time the scan was performed
  • Whether hashing and validation were enabled
  • The collection of items (files and folders) found during the scan

Scans are always tied to a root via root_id, and are ordered chronologically by scan_time.


Item

An item represents a single file or folder discovered during a scan.

Each item includes metadata such as:

  • Path
  • Whether it's a file or directory
  • Last modified date
  • Size
  • Optional hash and validation info

Items are created when newly seen, and marked with a tombstone (is_ts = true) if they were present in previous scans but no longer exist.


Change

A change represents a detected difference in an item between the current scan and a previous one.

Changes may reflect:

  • File additions
  • File deletions
  • Metadata or content modifications

Each change is associated with both the scan and the item it affects.


Entity Flow

A simplified representation of how the entities relate:

Root
 └── Scan (per run)
      └── Item (files and folders)
           └── Change (if the item changed)

These concepts form the foundation of FsPulse’s scan and query capabilities. Understanding them will help you make the most of both interactive and command-line modes.