This is a very handy script that I used to backup and restore the NTFS security settings last time for a File Server migration project. If you would like to try it, all you need to do is to copy and paste the following script into a text file and rename it to NTFSBKP.bat, then download the utility ‘subinacl.exe’ from Microsoft and place it in the same folder.
********************************************
REM The syntax for using NTFSBKP.bat is: NTFSBKP DriveOrFolder DestinationFolder BKP|RST
:: Where:
:: DriveOrFolder is the drive, or folder, including files and sub-folders, whose NTFS security you wish to backup or restore.
:: DestinationFolder is the destination folder that will contain /does contain two files that hold backed up security attributes.
:: BKP|RST BKP causes NTFSBKP.bat to backup the NTFS security. RST causes NTFSBKP.bat to restore the NTFS security from the previous backup.
@echo off
If {%3}=={} @echo Syntax: NTFSBKP DriveOrFolder DestinationFolder BKP^|RST&goto :EOF
if not exist %1 @echo NTFSBKP – %1 NOT FOUND.&goto :EOF
if not exist %2 @echo NTFSBKP – %2 NOT FOUND.&goto :EOF
if /i {%1}=={%2} @echo Syntax: NTFSBKP DriveOrFolder DestinationFolder BKP^|RST&goto :EOF
if /i {%3}=={BKP} goto OK
if /i {%3}=={RST} goto OK
@echo Syntax: NTFSBKP DriveOrFolder DestinationFolder BKP^|RST&goto :EOF
:OK
setlocal
set DorF=%1#
set DorF=%DorF:”=%
set DorF=%DorF:\#=%
set DorF=%DorF:#=%
set Fld=%2#
set Fld=%Fld:”=%
set Fld=%Fld:\#=%
set Fld=%Fld:#=%
set Sw=%3
set F1=%DorF%
set F1=%F1::\=_%
set F1=%F1:\=_%
set F2=”%Fld%\%F1%_ALL.log”
set F1=”%Fld%\%F1%.log”
if /i “%Sw%” EQU “RST” goto Restore
set D1=”%DorF%”
set D2=”%DorF%\*.*”
if exist %F1% del /q %F1%
if exist %F2% del /q %F2%
subinacl /noverbose /nostatistic /outputlog=%F1% /subdirectories %D1% /display
subinacl /noverbose /nostatistic /outputlog=%F2% /subdirectories %D2% /display
endlocal
goto :EOF
:Restore
if not exist %F1% goto :Rest1
if not exist %F2% goto :Rest2
subinacl /nostatistic /playfile %F1%
subinacl /nostatistic /playfile %F2%
endlocal
goto :EOF
:Rest1
@echo NTFSBKP %1 %2 %3 – %F1% NOT FOUND.
endlocal
goto :EOF
:Rest2
@echo NTFSBKP %1 %2 %3 – %F2% NOT FOUND.
endlocal
********************************************