Ai đó có thể hiểu ý nghĩa của bài viết Hard Hard Links và Jiances bài viết từ MSDN không?


2

Tại liên kết cứng và liên kết bài viết MSDN, người ta có thể đọc như sau:

Liên kết cứng là biểu diễn hệ thống tệp của một tệp mà nhiều hơn một đường dẫn tham chiếu một tệp trong cùng một ổ đĩa. Để tạo một liên kết cứng, hãy sử dụng chức năng CreateHardLink. Mọi thay đổi đối với tệp đó sẽ hiển thị ngay lập tức đối với các ứng dụng truy cập tệp đó thông qua các liên kết cứng tham chiếu tệp đó. Tuy nhiên, kích thước mục nhập và thông tin thuộc tính chỉ được cập nhật cho liên kết thông qua đó thay đổi được thực hiện. Lưu ý rằng các thuộc tính trên tệp được phản ánh trong mọi liên kết cứng đến tệp đó và các thay đổi đối với các thuộc tính của tệp đó truyền đến tất cả các liên kết cứng. Ví dụ: nếu bạn đặt lại thuộc tính READONLY trên một liên kết cứng để xóa liên kết cứng cụ thể đó và có nhiều liên kết cứng đến tệp thực tế,

Ai đó có thể có ý nghĩa của đoạn văn trên?
Không phải các thuộc tính câu lệnh trên tệp được phản ánh trong mọi liên kết cứng đến tệp đó tương đương với các thay đổi của câu lệnh đối với các thuộc tính của tệp đó truyền đến tất cả các liên kết cứng ?
Làm thế nào để thiết lập lại bit READONLY có thể đưa tệp và tất cả các liên kết cứng còn lại trở về trạng thái SYN SÀNG ?

BIÊN TẬP

Sau khi đọc câu trả lời tuyệt vời của JdeBP cho câu hỏi này, tôi vẫn còn nghi ngờ.

Tôi hiểu rằng có một bản sao một phần của MFT $STANDARD_INFORMATIONcho mỗi liên kết cứng trỏ đến mục này mà theo câu trả lời thậm chí không được cập nhật trừ khi liên kết cứng được đổi tên, tạo hoặc hủy . Điều gì xảy ra khi một người đọc thuộc tính của một liên kết cứng? Tôi đoán bản sao của liên kết cứng $STANDARD_INFORMATIONnày bị bỏ qua vì nó có thể không phản ánh trạng thái hiện tại và các thuộc tính đang được đọc trực tiếp từ mục nhập của MFT $STANDARD_INFORMATION. Ngoài ra, trong quá trình này, không có thông tin nào được cập nhật vì đây không phải là bất kỳ hoạt động nào bạn liệt kê. Có phải vậy không?

Nếu người ta tắt bit R để cho phép xóa một liên kết cứng vào tệp, thì (giả sử đó không phải là liên kết cuối cùng), người ta phải đặt lại bit R một lần nữa, bằng mọi cách, để tạo tệp chỉ đọc một lần nữa.

Bây giờ, tôi không nghĩ rằng đó không phải là phần liên kết cuối cùng . Tôi không thấy cách liên kết là người cuối cùng tạo ra sự khác biệt ở đây. Vẫn còn một tệp (mục nhập của MFT) và người ta có thể thay đổi trực tiếp các thuộc tính của nó (không thông qua bất kỳ liên kết nào). Hoặc là để nếu có một tệp có một liên kết có nghĩa là không có sự tương ứng giữa các mục và tệp của MFT?


"Đặt lại" có thể có nghĩa là những điều ngược lại: a) được đặt thành trạng thái ('tắt') mặc định hoặc b) được đặt lại về trạng thái 'bật' như trước đây.
grawity

2
Đáp lại chỉnh sửa của bạn: 1) Bản gốc cũng là một liên kết. Nếu bạn xóa liên kết cuối cùng, điều đó có nghĩa là tập tin đã biến mất. 2) Khi bạn đặt câu hỏi và đánh dấu câu trả lời được chấp nhận, vui lòng không chỉnh sửa bất kỳ câu hỏi nào khác trong cùng một bài. Hỏi họ trong các ý kiến, hoặc trong một bài viết riêng biệt.
grawity

Câu trả lời:


4

Như đã grawitynói, "thiết lập lại" thứ hai là viết kém hoặc sai hoàn toàn.

Không phải các thuộc tính câu lệnh trên tệp được phản ánh trong mọi liên kết cứng đến tệp đó tương đương với các thay đổi của câu lệnh đối với các thuộc tính của tệp đó truyền đến tất cả các liên kết cứng ?

Không. Bài báo nêu rõ một cái gì đó có lẽ là quá nhiều chi tiết triển khai cho độc giả mục tiêu của nó. Trên NTFS, mỗi mục trong MFT có thể có 0 hoặc nhiều $FILE_NAME thuộc tính . Chúng ghi lại thư mục mẹ và tên trong thư mục đó cho mỗi liên kết cứng đến tệp. Nhưng họ cũng ghi lại các cờ thuộc tính tệp, mặc dù các cờ đó được ghi trong $STANDARD_INFORMATIONthuộc tính đơn của mục MFT . Các quy tắc là một phức tạp không đáng kể, nhưng nói ngắn gọn $STANDARD_INFORMATIONlà những gì quan trọng và $FILE_NAMEthông tin thậm chí không được cập nhật trừ khi một liên kết cứng được đổi tên, tạo hoặc hủy - yêu cầu chạm vào các $FILE_NAMEthuộc tính, và đó là điểm hiện tại cờ thuộc tính có thể được truyền đến$FILE_NAME thuộc tính.

Một nhà phát triển có thể đã giải thích các chi tiết cơ bản của NTFS cho tác giả kỹ thuật đã viết bài báo MSDN. Nhưng họ thực sự không có bất kỳ liên quan nào đến người dùng cuối hoặc thậm chí với người lập trình ứng dụng. Đây là những chi tiết nội bộ về cách thức hoạt động của NTFS. Từ phối cảnh Win32, một tệp / thư mục có chính xác một bộ cờ thuộc tính và việc cập nhật nó đang cập nhật nó, tuy nhiên điều đó đã được thực hiện. Nếu người ta Rtắt bit để cho phép xóa một liên kết cứng đến tệp, thì (giả sử đó không phải là liên kết cuối cùng), người ta phải đặt Rlại bit một lần nữa, bằng mọi cách, để làm cho tệp được đọc- chỉ một lần nữa


Chỉ cần làm rõ, khi bạn thay đổi cờ chỉ đọc trên một liên kết, thay đổi này có hiệu lực ngay lập tức cho tất cả các liên kết khác của tệp nhưng không hiển thị ngay trên các liên kết đó, ví dụ: trong danh sách thư mục hoặc thông qua attriblệnh.
Harry Johnston
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.