注意 Windows 對於檔案複製與搬移的 NTFS 權限變化 [重要]

分享到噗浪!

之前在客戶那邊發生過好幾次檔案權限不足的問題,每次客戶拿到我們提供的更新檔,他都會先將檔案先複製到「桌面」,然後才會「搬移」到 C:\inetpub\wwwroot 網站目錄,結果每次更新檔案都會發生權限不足的問題,且他每次更版都要手動調整那些複製進去的檔案的檔案權限,這都是起因於 NTFS 權限在檔案被複製搬移時雖時都有可能發生權限的變更,此基本且重要的觀念不可不知!

將檔案從一個目錄「複製」到另一個目錄時 ( Ctrl + C , Ctrl + V )

由於「複製」檔案時,視同在「新目錄」下「建立新檔案」,所以複製檔案時原本該檔案的 NTFS 權限並不會帶過去,而複製過去的檔案會直接繼承該目標目錄的存取權限。

例如:我要將 C:\DirA\test.txt 複製到 C:\DirB\test.txt 時,C:\DirB\test.txt 的權限就會變成是繼承 C:\DirB 目錄的 NTFS 權限!

將檔案從一個目錄「搬移」到另一個目錄時 ( Ctrl + X , Ctrl + V )

在「搬移」檔案時,情況稍稍複雜一些,共有兩種狀況:

1. 在相同磁碟之間搬移檔案 ( 例如從 C:\DirA 複製到 C:\DirB )

  • 這種情況下,檔案被搬移過去後,檔案的 NTFS 權限會被完整保留
  • 這種相同磁碟搬移檔案的過程就好像在同一個目錄下將檔案「重新命名」一樣,而在作業系統中實際上也真的只是做重新命名的動作而已!

2. 在不同的磁碟之間搬移檔案( 例如從 C:\ 複製到 D:\ )

  • 這種情況與「複製」檔案是一樣的,檔案必須先在目的磁碟建立新檔,然後再將來源檔案刪除!
  • 換個角度想,如果你有一個 50GB 的大檔案,如果從 C:\DirA 目錄搬移到 C:\DirB 目錄,也許只要 1 秒的時間,但是若你將這個 50GB 的大檔案,從 C:\ 目錄搬移到 D:\ 目錄,可能會花上 10 分鐘之久。

額外補充一個不算觀念的觀念(算常識)

  • 如果你將檔案搬移或複製到非 NTFS 的檔案磁區 (例如: FAT, FAT32, … ),那麼所有的 NTFS 權限也將會全部遺失。
  • 如果你的檔案從非 NTFS 的檔案磁區複製或搬移到 NTFS 的檔案磁區 (FAT, FAT32, … ),那麼這些檔案會直接繼承目的目錄的權限。
  • 簡言之:FAT, FAT32 沒有權限概念!
  • 所以,如果你的 USB 隨身碟不是 NTFS 權限的話(大部分都不是),那麼也就不用那麼考慮權限變更的問題。

這一個簡單的小觀念可能會對網站部署造成大影響,因此不可不知!

  

此文章由 will 發表於 2010/2/25 下午 10:11:57

永久連結 | 評論 (6) | 此文章的RSSRSS comment feed |

分類: 系統管理 | Tips

標籤: , , ,

評論

二月 26. 2010 00:21

sunny

板主您好,對於此一觀念,可否請教一個問題?
若是在 ntfs 的 A硬碟 copy或 move 到隨身碟(fat),再從隨身碟 copy或 move 到 ntfs 的B硬碟,此時權限是否改變了?
謝謝

sunny 台灣

二月 26. 2010 00:54

Stanley

依照額外補充的第一點與第二點
樓上的解答應該為
隨身碟複製過去的檔案權限為的目地目錄(B硬碟)權限

Stanley 台灣

二月 26. 2010 12:06

Will 保哥

Stanley: 你的理解沒錯。

sunny:任何檔案被複製或搬移至 FAT 的磁碟就已經完全失去權限資訊了,所以再複製或搬移到 NTFS 的磁區自然就會繼承目標目錄的 NTFS 權限。

Will 保哥 台灣

二月 27. 2010 11:17

zuyan

那請教檔案移動到不同的NTFS磁碟,權限是否也一併複製
剪下,貼上( Ctrl + X , Ctrl + V)

zuyan 台灣

二月 27. 2010 11:22

Will 保哥

zuyan: 如我文章所述,不會複製權限過去,而會直接繼承目標目錄的 NTFS 權限。

Will 保哥 台灣

三月 2. 2010 17:36

abc


答案: 使用 XCOPY

XCOPY /O

  /O           複製檔案所有權及 ACL 資訊。

XCOPY忘記怎麼用了,
有興趣者,Google查查吧.

複製檔案和樹狀目錄。

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\r
                           [/EXCLUDE:file1[+file2][+file3]...]

  source       指定要複製的檔案。
  destination  指定位置或者/以及新檔案的名稱。
  /A           只複製設定成保存屬性的檔案,不要改變屬性的設定。
  /M           只複製設定成保存屬性的檔案,並清除保存屬性。
  /D:m-d-y     複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,
               只複製那些來源檔案日期比目的檔案日期為新的檔案。
  /EXCLUDE:file1[+file2][+file3]...
               指定檔案清單字串。每個字串
               應該在檔案中的不同行。如果有字串對應到要進行複製的檔案絕
               對路徑的任何部分,這個檔案會被排除複製。例如,指定字串
               \obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是
               .obj 的檔案複製。
  /P           在建立每個目的檔案時顯示提示。
  /S           複製每個目錄及其包含的子目錄,不複製空目錄。
  /E           複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E
               相同,能夠用來修改 /T。
  /V           驗證每個新檔案。
  /W           在複製之前提示您按鍵繼續。
  /C           如果錯誤發生時也繼續複製。
  /I           如果目的不存在且複製一個以上的檔案的話,就假設指定的
               目的一定是目錄。
  /Q           在複製時不要顯示檔名。
  /F           在複製時顯示來源及目的檔案的全部檔名。
  /L           顯示要複製的檔案。
  /G           允許加密檔案複製到不支援加密的
               目的地。
  /H           時複製隱藏檔和系統檔。
  /R           覆蓋唯讀檔案。
  /T           建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。
               /T /E 會包括空目錄及子目錄。
  /U           只複製已經存在目的位置的檔案。
  /K           複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。
  /N           用所產生的短檔名來進行複製。
  /O           複製檔案所有權及 ACL 資訊。
  /X           複製檔案審查設定 (包含 /O)。
  /Y           不要提示您確認是否要覆蓋一個已經存在的檔案。
  /-Y          示您確認是否要覆蓋一個已經存在的檔案。
  /Z           在可重新開始的模式中複製網路檔案。

參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在命令列中用 /-Y 參數
來覆蓋原有設定。

abc 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading