e4defrag
ext4 filesystem defragmentation tool
TLDR
Defragment a whole mounted filesystem
$ sudo e4defrag [/dev/sdXN]
Defragment a single file$ sudo e4defrag [path/to/file]
Defragment a directory and everything below it$ sudo e4defrag [path/to/directory]
Check the fragmentation level without defragmenting$ sudo e4defrag -c [path/to/file_or_device]
Print verbose per-file information$ sudo e4defrag -v [/dev/sdXN]
SYNOPSIS
e4defrag [-c] [-v] target...
DESCRIPTION
e4defrag defragments an ext4 filesystem. It can operate on entire filesystems, directories, or individual files.Unlike offline defragmenters, e4defrag can run while the filesystem is mounted and in use.
PARAMETERS
-c
Check the current fragmentation state and print a fragmentation score without defragmenting. No root privileges are needed for files you own.-v
Verbose output, printing the result for each filetarget
Device, directory, or file to defragment. A device must be mounted.
INSTALL
sudo apt install e2fsprogs
sudo dnf install e2fsprogs
sudo pacman -S e2fsprogs
sudo apk add e2fsprogs-extra
sudo zypper install e2fsprogs
brew install e2fsprogs
nix profile install nixpkgs#e2fsprogs
CAVEATS
ext4 only: the kernel's EXT4IOCMOVE_EXT ioctl is what does the work, so ext2/ext3 filesystems are rejected. The target filesystem must be mounted, since e4defrag operates online. Defragmentation needs free contiguous space, so it is largely ineffective on nearly full filesystems. Files with a fragmentation score under 30 are already considered fine and are left alone.
SEE ALSO
e2freefrag(8), e2fsck(8), filefrag(8)
