Câu hỏi "Đường nối thư mục" và "liên kết tượng trưng thư mục"?


Trong bối cảnh NTFS:

MKLINK [[/D] | [/H] | [/J]] Link Target

/D      Tạo liên kết tượng trưng cho thư mục. Mặc định là một liên kết tượng trưng tệp.
/H      Tạo liên kết cứng thay vì liên kết tượng trưng.
/J      Tạo một Junction Directory.
Link    chỉ định tên liên kết tượng trưng mới.
Target  chỉ định đường dẫn (tương đối hoặc tuyệt đối) mà liên kết mới đề cập đến.

  1. Không phải là đường nối thư mục chính xác giống như một thư mục liên kết tượng trưng?

    Sự khác biệt giữa mklink /D f1 f2 và mklink /J f1 f2 ?

  2. Vì "thư mục" thực sự chỉ là một tập tin, sự khác nhau giữa liên kết tượng trưng thư mục và liên kết tượng trưng là gì?


338
2017-10-05 03:28


gốc


Liên quan: superuser.com/q/347930/24500 - surfasb


Các câu trả lời:


Đường giao nhau chắc chắn không giống với liên kết tượng trưng cho thư mục, mặc dù chúng hoạt động tương tự. Sự khác biệt chính là, nếu bạn đang tìm kiếm một máy chủ từ xa, các nút giao được xử lý tại máy chủ và liên kết tượng trưng thư mục được xử lý tại máy khách. Cũng xem nhận xét của Matthew về thực tế rằng điều này có nghĩa là các liên kết tượng trưng trên hệ thống tệp cục bộ có thể trỏ đến các hệ thống tệp từ xa.

Giả sử rằng trên một máy có tên Alice bạn đã đặt một điểm giao nhau c:\myjp và một liên kết tượng trưng cho thư mục c:\mysymlink, cả hai đều trỏ tới c:\targetfolder. Trong khi bạn đang sử dụng Alice, bạn sẽ không nhận thấy nhiều sự khác biệt giữa chúng. Nhưng nếu bạn đang sử dụng một máy khác có tên Bob, thì điểm giao nhau

\\Alice\c$\myjp sẽ trỏ đến \\Alice\c$\targetfolder

nhưng liên kết tượng trưng

\\Alice\c$\mysymlink sẽ trỏ đến \\Bob\c$\targetfolder

(Theo mặc định, hệ thống không theo các liên kết tượng trưng trên các ổ đĩa từ xa, vì vậy trong hầu hết các trường hợp, ví dụ thứ hai thực sự sẽ dẫn đến một trong hai "Không tìm thấy tệp" hoặc là "Không thể theo dõi liên kết tượng trưng vì loại của nó bị tắt.")

Sự khác biệt giữa một liên kết tượng trưng thư mục và một liên kết biểu tượng tập tin đơn giản là một biểu diễn một thư mục và một biểu thị một tệp. Vì mục tiêu của liên kết không cần phải tồn tại khi liên kết được tạo ra, hệ thống tệp cần phải biết liệu có cho ứng dụng biết rằng đó là một thư mục hay không.

Cũng cần lưu ý rằng việc tạo một liên kết tượng trưng đòi hỏi đặc quyền đặc biệt (theo mặc định, chỉ có sẵn cho các quy trình nâng cao) trong khi tạo ra một đường giao nhau chỉ yêu cầu quyền truy cập vào hệ thống tệp.


316
2017-10-22 19:03



Chỉ cần được rõ ràng: cũng có thể có sự khác biệt chức năng subtler khác giữa các mối nối thư mục và liên kết tượng trưng thư mục. Điều từ xa so với địa phương chỉ là hiển nhiên nhất từ ​​góc độ người dùng (ngược lại với nhà phát triển). - Harry Johnston
@MatthewSteeples có nghĩa là nếu tôi tạo một liên kết tượng trưng C:\testlink (trỏ đến C:\test trên máy tính của tôi) và ai đó truy cập từ xa vào máy tính của tôi và nhấp vào C:\testlink, nó sẽ giải quyết C:\test trên máy tính HIS, trong khi nếu tôi tạo một đường nối thư mục C:\testlink (trỏ đến C:\test trên máy tính của tôi) và ai đó truy cập từ xa vào máy tính của tôi và nhấp vào C:\testlink) nó sẽ dẫn anh ta đến C:\test trong máy của tôi? Hay tôi đã làm sai đường tròn? - Pacerier
@Pacerier trong bối cảnh này có, nhưng các liên kết tượng trưng cho phép bạn có một thư mục trên máy tính trỏ đến một mạng chia sẻ (vì chúng được giải quyết phía máy khách). Ví dụ: C: \ MyNetworkShare thực sự có thể trỏ tới \\ Alice \ Share - Matthew Steeples
@MatthewSteeples nhưng chúng tôi không thể tạo đường nối thư mục C:\MyNetworkShare trỏ đến \\Alice\Share cũng? - Pacerier
@ Người điều khiển, không, điểm giao nhau phải là địa phương. - Harry Johnston


Phức tạp nói chuyện đau não - Tôi thích bảng xếp hạng:

Giả sử bất kỳ MyLink là một liên kết tượng trưng và bất kỳ MyJunc là một điểm giao nhau Target as created.

ví dụ.

mklink /D MyLink C:\T_Dir để tạo liên kết tượng trưng cho thư mục đích

mklink /J MyJunc C:\T_Dir để tạo đường nối thư mục cho thư mục đích

Cú pháp ở đâu mklink [/J,/D] [link path] [target path] như đã gõ trên máy cục bộ


 link path    |   target path   |         When accessed ..
              |                 |  (locally)    |    (remotely)
              |                 |               |
C:\MyLink     |   C:\T_Dir      |  C:\T_Dir     |  [leads back to local]
C:\MyJunc     |   C:\T_Dir      |  C:\T_Dir     |  [leads to remote]
              |                 |
\\Svr\MyLink  |   C:\T_Dir      |   C:\T_Dir    |  [leads back to local]
\\Svr\MyJunc  |   C:\T_Dir      |  *** Must create and point local ***
              |                 |
C:\MyLink     |  \\Sv2\T_Dir    |  \\Sv2\T_Dir  |   Error*1
C:\MyJunc     |  \\Sv2\T_Dir    |  *** Error - Must point local ***
              |                 |
\\Svr\MyLink  |  \\Sv2\T_Dir    |  Error*1
\\Svr\MyJunc  |  \\Sv2\T_Dir    |  *** Must create link using target device ***

Lỗi * 1 - Nếu bạn đã bỏ chặn quyền truy cập vào các liên kết tượng trưng từ xa trên máy cục bộ của mình thì thao tác này sẽ hoạt động .. nhưng chỉ trên máy cục bộ mà nó được bỏ chặn


42
2018-02-02 16:30



Nó thật quái dị. Ngay cả các liên kết tượng trưng tương đối cũng không hoạt động từ xa. Ví dụ. Tôi tạo một thư mục d:\_tmp\data. Tạo liên kết như vậy: d:\_tmp>mklink /d data-link data. Người dùng từ xa có toàn quyền truy cập vào d:\_tmp và tất cả các thư mục con của nó NHƯNG anh ta vẫn sẽ không thể mở d:\_tmp\data-link. - Nux
Đó là bởi vì khi một liên kết tượng trưng được đánh giá phía máy khách, nó sẽ trỏ đến d: \ _ tmp \ data trên máy khách, chứ không phải máy chủ. - apraetor
Tôi nghĩ lý do tại sao nó lạ là rõ ràng. Nhưng tôi đồng ý với @Nux rằng nó là lạ, ít nhất là trong trường hợp của các liên kết tương đối. - Jon Coombs


Tôi đã ấn tượng rằng các mối nối xung quanh vì lý do di sản và các liên kết tượng trưng hoàn toàn tốt hơn (mọi thứ xuất hiện theo cách này theo giá trị mặt). Hóa ra, điều đó không hoàn toàn đúng. Có một số lý do chính đáng để sử dụng đường giao nhau thay vì liên kết tượng trưng. Sự khác biệt chính đi xuống để bảo mật và từ xa so với đường dẫn địa phương. Có, nhắm mục tiêu từ xa làm cho các liên kết tượng trưng trở nên chức năng hơn, nhưng cũng làm tăng hồ sơ bảo mật của chúng. Vì vậy, nếu bạn muốn một liên kết địa phương và có thể sống với một con đường tuyệt đối, bạn có lẽ tốt hơn với một đường giao nhau; nếu không, hãy xem xét một liên kết tượng trưng cho khả năng được thêm vào của nó.

enter image description here

** Câu lệnh về sự khác biệt về tốc độ / độ phức tạp xuất phát từ một câu lệnh chưa được xác minh trong Mục nhập Wikipedia trên các điểm reparse NTFS (đọc tốt). *


Các so sánh liên kết NTFS khác

Dưới đây là một số so sánh khác về chủ đề, nhưng chúng có thể gây hiểu nhầm khi xem xét các mối nối vì chúng không liệt kê các lợi ích mà tôi liệt kê ở trên.

Lấy từ đây (một giới thiệu tốt đọc)

enter image description here

Từ Trang SS64 trên MKLink

enter image description here


Nhận xét về thuật ngữ

Các liên kết là Liên kết tượng trưng

Các liên kết và các liên kết tượng trưng thực sự làm điều tương tự theo cùng một cách (các điểm reparse), ngoài những khác biệt nói trên trong cách chúng được xử lý. Trên thực tế, về mặt kỹ thuật, một Junction là một liên kết tượng trưng, ​​và đôi khi tài liệu có thể gọi một Junction là một liên kết tượng trưng, như trường hợp ở đây. Vì vậy, đó chỉ là một cái gì đó để được nhận thức về thuật ngữ.

NTFS

Mặc dù OP quy định điều này, nhưng nó chỉ đáng chú ý rằng "liên kết tượng trưng" là một thuật ngữ rất chung chung không dành riêng cho NTFS. Vì vậy, để được cụ thể, so sánh này là về NTFS Junctions so với NTFS Symbolic Links.


14



Bất cứ ai đã kiểm tra tốc độ xử lý của các mối nối và Liên kết tượng trưng? - 1000Gbps