File System Structures
What is a File System?
A file system is how an operating system organizes files on storage devices. It provides:- Hierarchical organization - Tree structure of directories and files
- Logical grouping - Related files organized together
- Access control - Permissions, ownership, auditing
- Abstraction - Hide physical storage details from users
90% of system administration work involves operating on file structures - managing permissions, data, backups, and configurations.
File System Types
Different file systems optimize for different use cases:Considerations When Choosing
- File name length - Some support only 11 characters
- File size limits - Maximum individual file size
- Number of files - Optimized for many small vs few large files
- Performance - Speed for specific workloads
- Features - Permissions, encryption, compression, journaling
Formatting
Formatting prepares a device with a specific file system:Windows File System Structure
Windows uses drive letters to organize storage devices.Root: C:\
The primary system partition, containing the operating system.
Drive Letters
- *C:* - System drive (typically)
- D:, E:, F:, … - Additional drives, removable media, network drives
Important Directories
Program Files
Location:C:\Program Files
Purpose: Software installed for all users (64-bit programs)
Access:
Program Files (x86)
Location:C:\Program Files (x86)
Purpose: 32-bit software on 64-bit Windows
Access:
Users
Location:C:\Users
Purpose: User-specific files and configurations
Contains:
- User home directories
- Desktop
- Documents
- Downloads
- AppData (application data)
Per-User Folders:
AppData is hidden by default. Contains application settings and data specific to each user.
Windows
Location:C:\Windows
Purpose: Operating system files
Important subdirectories:
- System32 - Core 64-bit system files and executables
- SysWOW64 - 32-bit system files (on 64-bit Windows)
- Fonts - System fonts
- Temp - System temporary files
Windows Environment Variables
Variables provide convenient access to important paths:| Variable | Description | Example |
|---|---|---|
%USERPROFILE% | Current user’s home directory | C:\Users\Admin |
%APPDATA% | User application data (roaming) | C:\Users\Admin\AppData\Roaming |
%LOCALAPPDATA% | User application data (local) | C:\Users\Admin\AppData\Local |
%PROGRAMFILES% | 64-bit program files | C:\Program Files |
%PROGRAMFILES(X86)% | 32-bit program files | C:\Program Files (x86) |
%WINDIR% | Windows directory | C:\Windows |
%SYSTEMROOT% | Windows system root | C:\Windows |
%TEMP% | Temporary files | C:\Users\Admin\AppData\Local\Temp |
%PATH% | Executable search paths | (list of directories) |
%HOMEDRIVE% | User’s home drive letter | C: |
%HOMEPATH% | User’s home path | \Users\Admin |
Linux File System Structure
Linux uses a single unified hierarchy starting from root (/).
Filesystem Hierarchy Standard (FHS)
Linux follows the FHS, though distributions may vary slightly. Reference: FreeDesktop.org File HierarchyRoot Directory: /
The root of everything in Linux.Important Directories
/boot - Boot Files
Purpose: Boot loader and kernel files Contains:- Linux kernel
- initramfs/initrd
- GRUB configuration
- EFI boot files (on EFI systems)
On EFI systems, may be mounted as ESP (EFI System Partition).
/etc - Configuration Files
Purpose: System-wide configuration files Important files:/etc/passwd- User account information/etc/shadow- Encrypted passwords/etc/group- Group information/etc/fstab- File system mount configuration/etc/hosts- Static hostname resolution/etc/hostname- System hostname/etc/resolv.conf- DNS configuration/etc/network/- Network configuration/etc/systemd/- systemd configuration
/home - User Home Directories
Purpose: Personal directories for regular users~/.config/- User application configuration~/.local/- User-installed programs and data~/.cache/- User application cache
/root - Root’s Home
Purpose: Home directory for root user (UID 0)/srv - Service Data
Purpose: Data for services provided by the system Examples:/srv/www/- Web server content/srv/ftp/- FTP server files/srv/nfs/- NFS shared directories
/tmp - Temporary Files
Purpose: Temporary storage Characteristics:- Cleared on system boot
- World-writable (with sticky bit)
- Short-lived data only
t (sticky bit) means only file owner can delete files.
/run - Runtime Data
Purpose: Volatile runtime data Contains:- Process IDs (PIDs)
- Socket files
- Lock files
- Cleared on boot
/usr - User Programs
Purpose: Vendor-supplied programs and libraries Structure:/var - Variable Data
Purpose: Persistent, variable runtime data Important subdirectories:/var/log - Log Files
/var/log - Log Files
System and application logs:
/var/log/syslog- System log/var/log/auth.log- Authentication log/var/log/apache2/- Apache logs/var/log/mysql/- MySQL logs
/var/cache - Cache Data
/var/cache - Cache Data
Persistent cache files:
/var/cache/apt/- Package cache- Can be deleted to free space
- System will regenerate as needed
/var/lib - State Data
/var/lib - State Data
Persistent application state:
/var/lib/mysql/- MySQL databases/var/lib/docker/- Docker data- Do not delete - contains important data
/var/spool - Queues
/var/spool - Queues
Task queues:
/var/spool/cron/- Cron jobs/var/spool/cups/- Print queue/var/spool/mail/- Email queue
/dev - Device Files
Purpose: Hardware device access File system type:devtmpfs
Common devices:
Everything is a file in Linux - even hardware devices!
/proc - Process Information
Purpose: Virtual file system with kernel/process info File system type:proc
Contents:
/proc/cpuinfo- CPU information/proc/meminfo- Memory information/proc/[pid]/- Per-process information/proc/sys/- Kernel parameters
/sys - System Information
Purpose: Kernel object information File system type:sysfs
Use cases:
- Hardware information
- Kernel modules
- Device configuration
Compatibility Links
For backwards compatibility, some directories are symlinks:/bin, but modern systems use /usr/bin.
User-Specific Directories in /home
Each user’s home directory contains configuration and data:~/.config
Purpose: User application configurations Examples:~/.config/firefox/- Firefox settings~/.config/code/- VS Code settings- Follows XDG Base Directory specification
~/.local
Structure:~/.cache
Purpose: User application cache Safe to delete - applications will regenerateHidden Files (Dotfiles)
Files starting with. are hidden:
ls -a
Path Navigation
Special Path Characters
| Symbol | Meaning | Example |
|---|---|---|
/ | Root directory | /etc/passwd |
~ | Home directory | ~/Documents |
. | Current directory | ./script.sh |
.. | Parent directory | ../parent_folder |
- | Previous directory | cd - |
Absolute vs Relative Paths
Absolute path:Mounting File Systems
Linux can “mount” file systems at any directory:/etc/fstab
Comparing Windows and Linux
| Aspect | Windows | Linux |
|---|---|---|
| Root | C:\ | / |
| Path separator | Backslash \ | Forward slash / |
| Drive letters | Yes (C:, D:, E:) | No (unified hierarchy) |
| User homes | C:\Users\ | /home/ |
| System files | C:\Windows\ | /usr/, /lib/, /etc/ |
| Programs | C:\Program Files\ | /usr/bin/, /usr/local/ |
| Config files | Registry + files | Text files in /etc/ |
| Temp files | %TEMP% | /tmp/ |
| Logs | Event Viewer + files | /var/log/ |
| Case sensitive | No | Yes |