FSUTIL.exe

File and Volume specific commands, Hardlink management, Quota management, USN, Sparse file, Object ID and Reparse point management.

8dot3name FIlename management options (for the Local System):

    Show the current setting for shortname behaviour:
    FSUTIL 8dot3name query
          
    Scan for affected registry entries:
    FSUTIL 8dot3name scan [/s] [/l log_file] [/v] DirectoryPath       
         /s  Recurse to subdirectories.
         /l  Log to file.
         /v  Verbose, output log to the console.

    Change the setting for shortname behaviour:
    FSUTIL 8dot3name set [0 through 3] [volume_Path] 1 | 0]

        When a volume is not specified, this updates the registry
          0 - Enable 8dot3 creation on all volumes
          1 - Disable 8dot3 creation on all volumes
          2 - Set 8dot3 creation on a per volume basis
          3 - Disable 8dot3 creation on all volumes other than the system volume.

        When a volume is  specified, this updates individual volume's on disk flag.
        This operation is only meaningful if the registry value is set to 2.
          0 - Enable 8dot3 creation on this volume
          1 - Disable 8dot3 creation on this volume

    Remove the shortnames for all files within a directory:
    FSUTIL 8dot3name strip [/t] [/s] [/f] [/l log_file] [/v] DirectoryPath
        This command will permanently remove 8dot3 filenames from a volume.
        It will list the registry keys pointing to the stripped filenames but will not
        modify the affected registry keys. Stripping will not be performed on any
        files with full path names longer than the maximum path length of 260 chars.

        **WARNING** If there are affected registry keys and you use the override switch /f
        it is recommended that you backup your volume as it may lead to unexpected
        application failures including the inability to uninstall.

          /t - Test mode, perform all operations except the actual stripping of filenames.
          /s - Recurse all subdirectories
          /f - Force, Strip the directory 8.3 filenames even if there are registry conflicts.
          /v - Verbose mode, output log to the console.
          /l - Specify an output log file, if not specified this will default
               to "%temp%\8dot3_removal_log@(GMT YYYY-MM-DD HH-MM-SS)"

        EXAMPLE: fsutil 8dot3name strip /l SS64.log /s D:\datafiles

File system Behavior options:

    FSUTIL behavior query option

    FSUTIL behavior set option

      Where option is one of:
       AllowExtChar {0|1}       Allow extended characters in filenames
       BugcheckOnCorrupt {0|1}  Enable bugcheck
       DisableCompression {0|1} Disable compression
       DisableEncryption {0|1}  Disable encryption
       DisableDeleteNotify {0|1} SSD TRIM Delete notifications for all volumes
                                 0=TRIM enabled, 1=TRIM disabled.
       DisableLastaccess {0|1}  Don’t generate last-access times
       Disable8dot3 [volumePath] sfnNum
          sfnNum is between 0 and 3 
           0 = Create short file names (default).
           1 = don’t create short file names. 
           2 = Set 8.3 names on a per volume basis.
           3 = Disable 8.3 names on all volumes except the system volume.
       EncryptPagingfile {0|1}
       QuotaNotify NumSeconds   Log quota violations, default=3600 seconds
       memoryusage {1|2}           Paged-pool memory cache, 1=default
       MftZone {1|2|3|4}        Set MFT Zone, multiple of 200MB
       SymlinkEvaluation L2L:{0|1}    Local to local symbolic links
       SymlinkEvaluation L2R:{0|1}    Local to remote symbolic links
       SymlinkEvaluation R2R:{0|1}    Remote to local symbolic links
       SymlinkEvaluation R2L:{0|1}    Remote to remote symbolic links

  1 = enable option
  0 = Disable option

    Eg :  FSUTIL behavior set disablelastaccess 1

    FSUTIL dirty query volume [pathname]

    FSUTIL dirty set volume [pathname]

    Marking a disk as dirty will prompt a Chkdsk at next boot
    Eg :  FSUTIL dirty query C:

Create a new file of a specific size:

    FSUTIL file createnew filename length

    Eg : fsutil file createnew C:\testfile.txt 1000

Find a file by user name (if Disk Quotas are enabled):

    FSUTIL file findbysid user directory

    Eg : fsutil file findbysid scottb C:\users

Query the allocated ranges for a file:

    FSUTIL file queryallocranges offset=val length=val filename

    offset : File Offset, the start of the range to query
    length : Size, in bytes, of the range

    Eg : fsutil file queryallocranges offset=1024 length=64 C:\Temp\sample.txt

Query the file ID of a file:

    FSUTIL file queryFileid filename

Display a random link name for the file ID (in most cases the file ID will only have one link name):

    FSUTIL file queryFileNamebyid volume fileID

Enable or disable linux style case sensitivity support for a folder (Windows 10 1803+):

    FSUTIL file SetCaseSensitiveInfo C:\folder\path enable
    FSUTIL file SetCaseSensitiveInfo C:\folder\path disable

Set the short NTFS filename for a file:

    FSUTIL file setshortname filename ShortName

    Eg : fsutil file setshortname C:\testfile.txt tes1.txt

Set the valid data length for a file:

    FSUTIL file setvaliddata filename datalength

    Eg : fsutil file setvaliddata C:\testfile.txt 4096

Set the zero data for a file:

    FSUTIL file setzerodata offset=val length=val filename

    offset : File offset, the start of the range to set to zeroes
    length : Byte length of the zeroed range
        Eg : fsutil file setzerodata offset=100 length=150 C:\Temp\sample.txt

List all drives (including mapped and Subst drives):

    FSUTIL fsinfo drives

Query drive type for a drive:

    FSUTIL fsinfo drivetype volume pathname

    Eg : fsutil fsinfo drivetype C:
    
    Script to list all drives on the local computer:
    @Echo off
    :: Store all the drive letters currently in use in a variable
    For /f "tokens=*" %%L in ('FSUTIL fsinfo drives') do (set _drives=%%L)
    :: Remove the first 8 characters - the 'Drives:' prefix 
    :: this may need to adjusted for other languages/locales
    Set _drives=%_drives:~8%
    :: Find and Display the drive type of each drive
    For %%D in (%_drives%) do (FSUTIL fsinfo drivetype %%D)

Query volume information:

    FSUTIL fsinfo volumeinfo volume pathname
    Eg : fsutil fsinfo volumeinfo C:\

Query NTFS specific volume information:

    FSUTIL fsinfo ntfsinfo volume pathname

    Eg : fsutil fsinfo ntfsinfo C:

Query file system statistics:

    FSUTIL fsinfo statistics volume pathname

    Eg : fsutil fsinfo statistics C:

Create a hardlink:

    FSUTIL hardlink create New_filename Existing_filename

    Eg : fsutil hardlink create c:\foo.txt c:\bar.txt

List hardlink(s) for a file:

    FSUTIL hardlink list filename

Edit an object identifier:

    FSUTIL objectid {query | set | delete | create}

QUOTA Management:

    FSUTIL quota {query|disable|track|enforce } C:
    
    FSUTIL quota violations
    
    FSUTIL quota modify volume_pathname threshold limit user

    Eg : fsutil quota modify c: 3000 5000 domain\user

Self healing management:

    FSUTIL repair query volume pathname

    FSUTIL repair set volume pathname flags
       Flags: 0x01 - enable general repair
              0x08 - warn about potential data loss
              0x10 - Disable general repair and bugcheck once on first corruption.

    FSUTIL repair wait volume pathname [wait_type]
       Wait types: 0 - Wait for all repairs (default)
                   1 - Wait for the current repair    FSUTIL repair initiate  volume pathname file_ref#
       file_ref# : File reference including segment number of the file.

Query a reparse point:

    FSUTIL reparsepoint query filename

    Eg : fsutil reparsepoint query C:\Server

Delete a reparse point:

    FSUTIL reparsepoint delete filename

    Eg : fsutil reparsepoint delete C:\Server

Transactional Resource Manager management:

    FSUTIL resource create RM_root_pathanme
    FSUTIL resource info RM_root_pathanme
    Clean transactional metadata on next mount?
    FSUTIL resource setautoreset {true|false} RM_root_pathanme
    Prefer consistency over availability:
    FSUTIL resource setconsistent RM_root_pathanme
    Prefer availability over consistency:
    FSUTIL resource setavailable RM_root_pathanme
    FSUTIL resource setlog {growth | maxextents | minextents | mode | rename | shrink | size}
    FSUTIL resource start RM_root_pathanme RM_log_pathanme
    FSUTIL resource stop RM_root_pathanme RM_log_pathanme
    FSUTIL transaction commit guid    FSUTIL transaction list
    FSUTIL transaction fileinfo filename    FSUTIL transaction query files|all guid
    FSUTIL transaction rollback guid

Set sparse file properties:

    FSUTIL sparse queryflag filename
    FSUTIL sparse setflag filename

    FSUTIL sparse queryrange filename
    FSUTIL sparse setrange filename Beginning_offset Length
    
    Eg : fsutil sparse queryflag "C:\My Test.txt"

Manage the update sequence number (USN) change journal:

    FSUTIL usn createjournal m=max a=alloc-delta Volume_pathname
    FSUTIL usn deltejournal flags Volume_pathname
       Deleting the change journal impacts the File Replication and the Indexing Service, it
       will require a complete (and time-consuming) scan of the volume. 
    FSUTIL usn enumdata file_ref# lowusn highusn Volume_pathname
    FSUTIL usn queryjournal Volume_pathname
    FSUTIL usn readdata filename

Volume management:

    FSUTIL volume dismount Volume_pathname
    FSUTIL volume diskfree Volume_pathname
    FSUTIL volume querycluster Volume_pathname cluster [cluster...]

To run FSUTIL, you must be logged on as an administrator or a member of the Administrators group.

Sparse files provide a method of saving disk space for files that contain meaningful data as well as large sections of data composed of zeros. If an NTFS file is marked as sparse, then disk clusters are allocated only for the data explicitly specified by the application.
e.g. The Indexing Service, stores it's catalogs as sparse files.

With 8.3 filennames disabled you'll notice a performance improvement only with a large number of files (over 300,000) in relatively few folders where a lot of the filenames start with similar names. Not having 8.3 filenames available will prevent the use of old applications such as Word 2.0 and Excel 4.0

If you have a lot of small files, you might need a larger Master File Table to avoid MFT fragmentation:
FSUTIL behavior set mftzone 2 will reserve 25 % of the volume for the MFT.
1 = 12.5 %(default)
2 = 25%
3 = 37.5%
4 = 50%

This won't affect existing disk partitions, after changing the mftzone size, reboot the machine and create a new partition.

In Windows7 and Server 2008 the mft zone is allocated in blocks of 200MB:
1 = 200 MB (default)
2 = 400 MB
3 = 600 MB
4 = 800 MB

Increasing the MFT zone does not decrease the disk space available for data files.

The last access time attribute of NTFS can slow performance, if you disable it, the time set will simply be the Creation Time.
FSUTIL behavior set disablelastaccess 1

Bugs

FSUTIL outputs a NULL character (not a space) after every drive specifier, this can cause difficulty when piping the output of fsutil into other commands (particularly FOR). The output from FSUTIL varies by OS see this forum thread for more detail.

Some features in fsutil are reported to not work correctly under FAT or FAT32 volumes e.g. FSUTIL dirty query.

“You can tune a file system, but you can't tune a fish” ~ Sun man page for tunefs

Related:

Q982018 - FSUTIL update - compatibility with Advanced Format Disks.
CACLS - Change file permissions.
CHKNTFS - Check the NTFS file system.
DevCon - Device Manager Command Line Utility.
DIRUSE - Display disk usage.
DISKSHADOW - Volume Shadow Copy Service.
MKLINK - Create a symbolic link (
linkd)
PSINFO -d - Display drive information.
Q174619 - MFT How NTFS reserves space for its Master File Table.


 
Copyright © SS64.com 1999-2019
Some rights reserved