在 Windows 要完整備份跟還原資料夾很簡單,整個資料夾壓縮成 .zip 或 .7z 就好了。當資料毁損或遺失,解壓覆寫檔案即可還原。但解壓縮只能還原資料夾結構與檔案,不包含原本的 NTFS 權限設定,那權限有沒有辦法備份還原呢?

前幾天查資料時意外學到一招 - Windows 內建工具 - icacls,除了能用查詢跟設定 NTFS 權限,也能備份跟還原權限設定。

不囉嗦,直接用實例來示範。假設我有個 SrcDir 資料夾結構如下:(延伸閱讀:使用 tree.exe 快速產生資料夾樹狀結構)

我在資料夾亂設了幾條權限,用 PowerShell 小工具產生權限報表如下。Jeffrey 對 SrcDir 可修改,user2 對 SrcDir\AnotherSubDir 可讀取,user1 對 SrcDir\SubDir 可讀取,對 SrcDir\SubDir\SubSubDir 可寫入:(藍色是額外設定的權限,灰色是繼承而來的權限)

有個上述權限報表沒包含的檔案 SrcDir\SubDir\SubSubDir\test.txt,我多給 user3 修改權限,以測試檔案權限也能還原:

要備份權限設定,可使用指令 icacls .\SrcDir /save SrcDirPerm.txt /t /c(/t 包含子目錄,/c 是略過錯誤繼續跑),產出的 SrcDirPerm.txt 內容如下:

接著將 .\SrcDir 壓縮成 SrcDir.zip,再解壓縮到 .\Restored\SrcDir,資料夾結構回來了,但權限不對:

要用 icacls 還原 NTFS 權限設定需以系統管理員權限執行(否則會得到 Not all privileges or groups referenced are assigned to the caller. 錯誤),由於 SrcDirPerm.txt 記錄的是相對路徑 SrcDir、SrcDir\AnotherSubDir... 等,還原對象要給它的上一層路徑,也就是 .\Restored,完整指令為 icacls .\Restored /restore SrcDirPerm.txt,執行結果回報順利處理五個資料夾或檔案:

資料夾及檔案權限完美還原,大成功!


Comments

Be the first to post a comment

Post a comment