
作業系統:Windows Server 2016
如果我有一個資料夾 X,其中包含到另一個資料夾 Y 的連接點(在同一台電腦和同一磁碟區上)。那麼,如果我透過網路共用 X,連接到 X 的遠端使用者是否會被重定向到 Y?
用例是資料夾位置/名稱 Y 在計劃任務執行後不時發生變化。但我希望遠端用戶始終使用相同的網路共享名稱(X)。我可以在任務執行期間更新連線點。
還有其他技術可以實現這一目標嗎?我使用以下方法取得了一些成功:我重新建立或更新名為 X 的網路共享,並使其直接指向 Y。
我正在尋找一種也適用於以下情況的解決方案:讓 X 成為 Y 的共用。但我還需要這樣的情況:透過網路路徑(例如 X\B),遠端使用者應該能夠存取電腦上完全不同的路徑。因此我的想法是創建一個從 Y\B 到另一條路徑的交會點。 (遠端使用者將透過 X\B 存取)
是否可以?
答案1
是的,SMB 檔案伺服器將自動mklink /j
透明地追蹤目錄連線 ( ),即使目標指向共用資料夾之外。 (經過實驗測試。)
另一方面,伺服器不會遵循符號連結 ( mklink /d
) – 它們留給客戶端,預設情況下客戶端也不會遵循它們(如果啟用此選項,目標顯然必須是另一個共用資料夾)。請參閱 harrymc 的帖子以了解更多資訊。
作為第三個選項,在 Windows Server 上,您可以建立共用作為DFS命名空間,在該目錄下您可以同時擁有常規文件和特殊的“引用”目錄,這些目錄可能指向另一個共享 - 甚至在另一台伺服器上。 (這些引用始終遵循客戶端,並且所有 Windows 版本、libsmbclient、甚至 Linux cifs.ko 都可以識別它們。)
如果需要將資料夾 Y 移至另一台計算機,DFS 可能是首選。 (它不需要 Active Directory,儘管所有檔案伺服器的通用身份驗證確實使事情變得更容易。)
答案2
預設用戶端 Windows 不允許符號連結鏈。
控制該行為的命令是 fsutil,在文章中進一步記錄 Fsutil 行為。
您正在尋找的特定行為名為SymlinkEvaluation
。您可以透過在命令提示字元中輸入命令來查看其當前值
fsutil behavior query SymlinkEvaluation
。以下是我的 Windows 10 上的預設設定:
的行為代碼SymlinkEvaluation
的名稱為
L2L
、L2R
、R2L
和R2R
,意義如下:
L
代表“本地”,R
代表“遠端”- 第一個
L
或R
-前-2
指的是連結本身的位置(而不是其目標)相對於機器訪問鏈接。 - 第二個
L
或R
-後-2
指的是連結的位置相對於 LINK 本身所在機器的目標。
例如,設定SymlinkEvaluation R2L
意味著您可以控制對連結的存取:
- 位於遠端電腦上 (
R
) - 指向同一台遠端電腦上的目標 (
L
)
因此,可能性是:
- 本地到本地的符號鏈接,
L2L:{0|1}
- 本地到遠程的符號鏈接,
L2R:{0|1}
- 遠端到本地符號鏈接,
R2R:{0|1}
- 遠程到遠程符號鏈接,
R2L:{0|1}
其中0
代表禁用,1
代表啟用。
您可能正在尋找的命令是:
fsutil behavior set SymlinkEvaluation R2L:1
請記住,這是在客戶端而不是伺服器上完成的。
答案3
2022 年 9 月:網路共享連線似乎已停止運作。
https://learn.microsoft.com/en-us/sysinternals/downloads/junction
最後更新:2022 年 7 月 19 日
筆記
Windows 不支援與遠端共用上的目錄的聯結。
過去,我在網路共享伺服器上創建了連接,指向不同的驅動器。一切正常。到目前為止我已經有一段時間沒有使用它了,但是事情壞了。
- 在客戶端,雙擊連線圖示沒有任何反應—沒有任何顯示或變更。
- 在客戶端,「屬性」將聯結顯示為資料夾,但它有 0 個位元組和 0 個檔案。
- 右鍵單擊該圖示並選擇“在新視窗中開啟”沒有任何反應。
- 「映射網路磁碟機」或直接前往 \server\share 都不起作用
在伺服器端,執行這些操作沒有幫助:
- 為聯結目標設定新共享。
- 重新開始,建立新的連接,新的共享,重置「安全」選項卡
Windows 10 專業版 21H2 19044.1889 Windows 功能體驗套件 120.2212.4180.0
感謝偉大的微軟打破了另一個生產力功能。