Sự khác biệt giữa các liên kết tượng trưng và cứng là gì?


Câu trả lời:


40

Các ngữ nghĩa khác nhau giữa các liên kết cứng và mềm làm cho chúng phù hợp cho những thứ khác nhau.

Liên kết cứng:

  • không thể phân biệt với các mục nhập thư mục khác, bởi vì mọi mục nhập thư mục là liên kết cứng
  • "bản gốc" có thể được di chuyển hoặc xóa mà không phá vỡ các liên kết cứng khác đến cùng một nút
  • chỉ có thể trong cùng một hệ thống tập tin
  • quyền phải giống như quyền trên "bản gốc" (quyền được lưu trong nút, không phải mục nhập thư mục)
  • chỉ có thể được thực hiện cho các tập tin, không phải thư mục

Liên kết tượng trưng (liên kết mềm)

  • chỉ đơn giản là ghi lại điểm đó đến một đường dẫn tập tin khác. ( ls -lsẽ hiển thị đường dẫn nào mà symlink trỏ tới)
  • sẽ phá vỡ nếu bản gốc được di chuyển hoặc xóa. (Trong một số trường hợp, thực sự mong muốn một liên kết trỏ đến bất kỳ tệp nào hiện đang chiếm một vị trí cụ thể)
  • có thể trỏ đến một tệp trong một hệ thống tệp khác
  • có thể trỏ đến một thư mục
  • trên một số định dạng hệ thống tệp, có thể các liên kết tượng trưng có các quyền khác với tệp mà nó trỏ đến (điều này không phổ biến)

1
Danh sách tốt đẹp. Chỉ muốn thêm rằng bạn cũng có thể phá vỡ một liên kết tượng trưng đường dẫn tương đối bằng cách di chuyển chính liên kết tượng trưng đó.
jw013

4
"[E] mục rất thư mục là liên kết cứng." Đó là một điểm tuyệt vời mà tôi chưa bao giờ thấy trước đây, nhưng tôi lo lắng rằng ai đó mới bắt đầu quấn đầu hoặc liên kết với mình sẽ không hiểu được. Đối với những người trong tình huống này, đây là một gợi ý: Bố cục của tệp và thư mục mà bạn thấy khi chạy lệnh ls không hoàn toàn giống với hệ thống lưu trữ mà nó đại diện. Liên kết cứng là tham chiếu đến một tệp riêng lẻ trên hệ thống lưu trữ. Một tập tin được lưu trữ một lần. Đọc lên "inodes."
Mario

@Mario: yup. Mỗi mục nhập thư mục liên kết một tên với một nút. Cuộc gọi hệ thống để xóa một tên tệp thậm chí được gọi unlink(2). Các tệp "bình thường" (có số lượng liên kết là 1) chỉ là một trường hợp đặc biệt. Nếu nó hữu ích, bạn có thể nghĩ các nút là các đối tượng và đặt tên là các con trỏ được đếm lại (số liên kết của nút là số tham chiếu).
Peter Cordes

1
Bạn có thể nghĩ về một liên kết tượng trưng như một tệp văn bản có tên trong đó. Nó được hiểu là một liên kết tượng trưng vì một lá cờ đặc biệt cho tập tin. Ví dụ liên kết cứng mà bạn biết là ....
Ned64


18

Điểm của cả hai loại liên kết là cung cấp một cách để làm cho một tệp xuất hiện ở hai vị trí cùng một lúc. Điều này có rất nhiều công dụng. 9 lần trong số 10 bạn muốn sử dụng các liên kết tượng trưng.

Liên kết tượng trưng hoặc "liên kết tượng trưng" hoạt động giống như các phím tắt Windows. Nội dung của một liên kết tượng trưng là một con trỏ đến vị trí thực của tệp / thư mục. Nếu bạn xóa tệp thực, liên kết tượng trưng sẽ trở nên "lơ lửng" và không hoạt động. Xóa symlink không xóa tập tin thực. Bạn có thể có bao nhiêu liên kết tượng trưng cho một tệp (hoặc thậm chí các liên kết tượng trưng khác) tùy thích.

Không giống như Windows, chúng hoạt động ở cấp hệ thống tệp, không phải vỏ hoặc cấp ứng dụng, do đó, hầu như bất kỳ ứng dụng nào cũng sẽ "theo" các liên kết tượng trưng như mong đợi. ls -alcó thể được sử dụng như một cách nhanh chóng để xem nơi liên kết tượng trưng "trỏ" tới.

Hardlinks hoạt động ngay cả ở mức độ thấp hơn. Một liên kết cứng là một mục nhập thư mục thực tế, trên hệ thống tập tin thực tế của tập tin. Về mặt kỹ thuật, một mục nhập thư mục là một liên kết cứng, do đó mỗi tệp có ít nhất một liên kết cứng trong một thư mục ở đâu đó. Các liên kết cứng không tách rời khỏi tệp mà chúng trỏ đến; nếu một tệp có nhiều liên kết cứng trong các thư mục khác nhau, hãy xóa liên kết cứng với các tiện ích như rmsẽ không thực sự xóa tệp, cho đến khi tất cả các liên kết cứng không còn nữa.

Tôi không thể nghĩ đến tình huống sử dụng các liên kết cứng là phổ biến hoặc thậm chí là cần thiết, trừ khi bạn cố tình muốn ngăn chặn các tệp bị xóa hoặc đang thực hiện một số công việc cấp thấp kỳ lạ với các phân vùng hoặc các thứ khác liên quan đến hệ thống tệp. EDIT: Mặc dù vậy, có những ý tưởng tuyệt vời trong các câu trả lời khác cho câu hỏi này!


Ngoài ra, các liên kết tượng trưng có các quyền như các tệp thông thường, nhưng hệ điều hành không tham khảo ý kiến ​​của chúng, thay vào đó, nó sử dụng các tệp nhắm mục tiêu quyền để quyết định hành vi. Và, đừng làm chuỗi liên kết tròn. Rất tệ.
LawrenceC

3
Nó thực sự rất xấu? Chuyện gì sẽ xảy ra? Điều thú vị nhất tôi có thể tạo lại là thông báo lỗi "Quá nhiều cấp độ liên kết tượng trưng".
mattdm

1
ls -llà đủ để xem những gì đang được liên kết bởi một liên kết tượng trưng, aviết tắt của --all, xem manpage. Và ngay cả khi các liên kết tượng trưng hoạt động tại hệ thống tệp, có các chức năng thay thế để sử dụng các liên kết tượng trưng làm tệp thay vì theo dõi.
D4RIO

4
Các phím tắt Windows thực sự khá khác biệt so với các liên kết tượng trưng: chúng đi theo mục tiêu của chúng và chúng cũng là các tệp thông thường. (Windows cũng có các liên kết tượng trưng, ​​nhưng chúng không được sử dụng nhiều.) Liên kết hoàn toàn là văn bản, văn bản đích được đọc bất cứ khi nào bạn truy cập tệp. Cho dù vấn đề về quyền liên kết phụ thuộc vào hệ điều hành và hệ thống tập tin.
Gilles 'SO- ngừng trở nên xấu xa'

AFAIK, nội dung của tệp symlink là đường dẫn mà symlink trỏ tới, có thể nhìn thấy khi nhìn vào kích thước của tệp symlink: ln -s /home 1; ls -l 1cho thấy symlink 1 dài 5 byte, trong khi ln -s /usr/share/ 2; ls -l 2đó cho thấy 2 dài 11 byte.
daniel kullmann

13

Liên kết cứng rất hữu ích cho các cơ chế sao lưu dựa trên đĩa, bởi vì bạn có thể có một cây thư mục đầy đủ cho mỗi bản sao lưu trong khi chia sẻ không gian cho các tệp không thay đổi - và hệ thống tệp theo dõi đếm tham chiếu, vì vậy khi tham chiếu cuối cùng đến một phiên bản nhất định biến mất vì sao lưu đã hết hạn / bị xóa vì lý do không gian, không gian mà nó sử dụng được tự động lấy lại. Một số ứng dụng thư khách cũng sử dụng nó cho các thư được gửi đến nhiều thư mục, vì cùng một lý do.


5
Có lẽ cơ chế kiểm soát phiên bản dựa trên đĩa? Nếu bạn liên kết cứng một cái gì đó, thì đó không phải là một bản sao lưu. Nếu tệp gốc bị hỏng, mọi liên kết cứng đến tệp cũng bị hỏng.
D4RIO

1
Hãy nghĩ về các hệ thống sao lưu gia tăng như Time Machine của Apple. (Rõ ràng là các bản sao lưu loại phục hồi thảm họa này không phải là sao lưu, nhưng "rất tiếc, tôi đã xóa tệp đó một cách tình cờ".) khi tập tin được thay đổi, gia tăng tiếp theo sẽ sao chép nó thay vì liên kết với phiên bản trước.
geekizard

Cảm ơn, sau đó các hệ thống sao lưu gia tăng khá giống với các hệ thống kiểm soát phiên bản theo cách này = D
D4RIO

Nhưng làm thế nào để cơ chế sao lưu gia tăng bảo tồn phiên bản "cũ" của một tệp? 1) Sao lưu A được tạo, tập tin liên kết cứng F; 2) Tập tin F được sửa đổi; 3) ngày hôm sau Sao lưu B được tạo ... Có vẻ như tôi không nhận được thứ gì đó
Dmitry Pashkevich

3

Liên kết cứng chỉ là tham chiếu đến cùng một không gian đĩa, đó là 'tại sao' bạn không thể liên kết cứng một cái gì đó trong hệ thống tập tin khác.

Symlinks là các tệp liên kết các tệp khác (như các phím tắt Windows), có thể trong cùng một hệ thống tệp, có thể không.

EDIT: Tôi sẽ giải thích một cái gì đó nhiều hơn. Mỗi tệp tồn tại có tối thiểu 1 liên kết cứng. Liên kết cứng là cách để truy cập nội dung của một nút của hệ thống tập tin. Bạn có thể lấy số inode của một tệp với ls -ivà lấy số lượng liên kết cứng statnhư sau trong ví dụ này:

$ stat plantilla-disenos.odt 
  File: «plantilla-disenos.odt»
  Size: 12367       Blocks: 32         IO Block: 4096   fichero regular
Device: 803h/2051d  Inode: 319875      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   d4rio)   Gid: ( 1000/   d4rio)
Access: 2011-02-11 21:36:19.000000000 -0300
Modify: 2010-03-02 23:27:28.000000000 -0300
Change: 2010-04-10 17:46:27.000000000 -0300

Cảm ơn @geekizard vì tài liệu tham khảo này:

Hạt nhân phải khởi động lại bản dịch pathname-in-inode (duyệt qua cây thư mục) để mở rộng các liên kết tượng trưng, ​​trong khi tất cả các liên kết cứng đều sử dụng cùng một inode. (Bạn sẽ thường thấy điều này được gọi là namei, từ tên của hàm kernel đã làm điều này trong Unix truyền thống.)

và điều này (đã được chỉnh sửa):

Liên kết cứng rất hữu ích cho các cơ chế sao lưu gia tăng dựa trên đĩa như Time Machine của Apple , vì bạn có thể có một cây thư mục đầy đủ cho mỗi bản sao lưu trong khi chia sẻ không gian cho các tệp không thay đổi - và hệ thống tệp theo dõi việc đếm tham chiếu, vì vậy khi tham chiếu cuối cùng cho một phiên bản nhất định biến mất vì sao lưu đã hết hạn / bị xóa vì lý do không gian, không gian mà nó sử dụng sẽ tự động được lấy lại. Một số ứng dụng thư khách cũng sử dụng nó cho các thư được gửi đến nhiều thư mục, vì cùng một lý do.

Chúc mừng


Là lợi ích hiệu suất để sử dụng các liên kết cứng? Hoặc, tại sao bạn lại sử dụng một liên kết cứng thay vì liên kết tượng trưng?
ripper234

Hạt nhân phải khởi động lại bản dịch pathname-in-inode (duyệt qua cây thư mục) để mở rộng các liên kết tượng trưng, ​​trong khi tất cả các liên kết cứng đều sử dụng cùng một inode. (Bạn sẽ thường thấy điều này được gọi là namei, từ tên của hàm kernel đã làm điều này trong Unix truyền thống.)
geekizard

@ ripper234: Liên kết cứng là giải pháp tiết kiệm không gian đĩa. Bạn không cần biết về hệ thống tập tin để tạo liên kết tượng trưng, ​​nhưng bạn cần suy nghĩ trước khi tạo liên kết tượng trưng vì bạn có thể tạo một vòng lặp hoặc đường dẫn có độ phân giải dài, vì vậy các chức năng như statsẽ thất bại.
D4RIO

@geekizard: Tôi đang thêm câu trả lời của bạn cho tôi vì nó rất hữu ích
D4RIO

Không vấn đề gì. Tôi thực sự bắt đầu viết nó như một bình luận cho bạn, nhưng bình luận quá ngắn.
geekizard

3

Một liên kết mềm trỏ đến một tên đường dẫn khác. Tên đường dẫn đó có thể thực sự tồn tại. Đường dẫn không được tìm kiếm cho đến khi bạn truy cập vào liên kết tượng trưng. Nếu đường dẫn không tồn tại khi bạn cố truy cập nó, bạn có một liên kết tượng trưng bị hỏng.

Với một liên kết cứng, bạn có một tệp có nhiều tên. Bạn không thể nói rằng một trong số đó là tệp "thực" và những cái khác chỉ là một liên kết đến nó. Họ đều như nhau. Không có thứ gọi là liên kết cứng bị hỏng theo cách có các liên kết tượng trưng bị hỏng.

Liên kết cứng chỉ hoạt động trong một hệ thống tập tin duy nhất. Nếu bạn muốn liên kết đến một tệp trên một hệ thống tệp khác (ví dụ: phân vùng khác hoặc chia sẻ mạng), bạn phải sử dụng liên kết mềm.

Một sự khác biệt lớn là những gì xảy ra khi bạn xóa một tập tin được liên kết. Nếu bạn xóa một trong các cặp tệp được liên kết cứng, sau đó tạo một tệp mới có cùng tên, bạn sẽ có hai tệp riêng biệt (liên kết đã biến mất). Nếu bạn xóa mục tiêu của một liên kết tượng trưng và tạo một tệp mới có cùng tên, liên kết sẽ trỏ đến tệp mới.


3

liên kết "cứng" chia sẻ cùng một nút

$ touch foo
$ ln foo foolink # Creates a hard  link
$ ls -li foo foolink
54996 -rw-r--r-- 2 bsd users 0 2011-12-11 09:06 foo
54996 -rw-r--r-- 2 bsd users 0 2011-12-11 09:06 foolink

Nếu tôi chỉnh sửa foo hoặc crazyink thì chỉ có một tệp và nó sẽ được cập nhật. Nếu tôi chỉ xóa một trong các tên tệp, thì nút và dữ liệu sẽ tồn tại, đánh lừa sẽ tồn tại.

$ rm foo
$ ls -li foo foolink
ls: cannot access foo: No such file or directory
54996 -rw-r--r-- 1 bsd users 0 2011-12-11 09:06 foolink

Nếu tôi tạo cùng một thứ, nhưng với một liên kết "mềm" hoặc tượng trưng, ​​thì Có một tệp, một nút và một tệp mới có nút riêng của nó trỏ đến đầu tiên.

$ touch foo
$ ln -s foo foolink # Create symlink
$ ls -li foo foolink
55029 -rw-r--r-- 1 bsd users 0 2011-12-11 09:11 foo
55033 lrwxrwxrwx 1 bsd users 3 2011-12-11 09:11 foolink -> foo

Nếu tôi chỉnh sửa foo hoặc crazyink thì vẫn chỉ có một tệp và nó sẽ được cập nhật.

Nếu tôi chỉ xóa symlink, inode và dữ liệu sẽ tồn tại. Nếu tôi xóa foo, dữ liệu sẽ biến mất, symlink sẽ tồn tại nhưng trỏ đến một tệp không tồn tại.

$ rm foo
removed `foo'
$ ls -l foo foolink 
ls: cannot access foo: No such file or directory
lrwxrwxrwx 1 bsd bsd 3 2011-12-11 09:11 foolink -> foo

1
Nhưng trường hợp sử dụng thực tế cho việc này là gì?
ewwhite

1
Một lần sử dụng, giống như "cắt ngắn" Một lần sử dụng khác, có nhiều phiên bản ứng dụng trên một hệ thống cho phép một người cài đặt, kiểm tra phiên bản mới, chỉ định ứng dụng theo đường dẫn đầy đủ, trong khi symlink trong bin trỏ đến sản xuất. Sau khi kiểm tra xong, thay đổi liên kết tượng trưng sang phiên bản mới, để lại phiên bản cũ cho bất kỳ người dùng nào có mã phụ thuộc phiên bản. Hãy nghĩ về perl, python, v.v.
bsd 11/11/11

1
trường hợp sử dụng thực tế cho các liên kết cứng. Hiện tại trên hệ thống tập tin của tôi, tôi đã tìm thấy một số lượng lớn các liên kết cứng trong / usr / share / zoneinfo Hãy nghĩ về tất cả các tệp được đặt tên đại diện cho các múi giờ, tất cả đều giống hệt EST. Chúng tôi tiết kiệm không gian hệ thống tập tin bằng cách không có các bản sao dự phòng và cho phép quản lý gói dễ dàng hơn mà không cần quản lý cài đặt / xóa symlink khi các gói được cài đặt / xóa. Ngay cả khi một trong những bị loại bỏ dữ liệu gốc được bảo tồn. Xin lỗi tôi đã không có thời gian cho một lời giải thích mang tính mô phạm hơn.
bsd

1

Liên kết cứng là các mục thư mục bổ sung cho cùng một tệp. Điều đó có nghĩa là

  • Tất cả các liên kết cứng đến một tệp phải nằm trên cùng một hệ thống tệp (vì một mục nhập thư mục không thể trỏ đến một tệp trên một hệ thống tệp khác), nhưng không nhất thiết phải trong cùng một thư mục.
  • Không có sự khác biệt giữa mục nhập thư mục gốc và liên kết cứng mới; từ quan điểm của hệ điều hành, chúng chỉ là hai mục nhập thư mục cho cùng một tệp. Một tệp chỉ bị xóa nếu tất cả các liên kết cứng bị xóa (và ngoài ra, không còn quá trình nào để tệp đó vẫn mở).
  • Nếu bạn di chuyển / đổi tên "bản gốc", miễn là bạn không di chuyển nó sang hệ thống tệp khác, các liên kết cứng khác sẽ không bị ảnh hưởng; họ vẫn chỉ vào cùng một tập tin.
  • Nhiều biên tập viên không viết nội dung mới vào cùng một tệp khi lưu mà chỉ thực hiện quy trình sau:

    1. Viết nội dung mới vào một tập tin mới .
    2. Đổi tên tệp cũ thành tên sao lưu (hoặc, nếu không giữ bản sao lưu của phiên bản tệp trước đó, chỉ cần xóa nó).
    3. Đổi tên tệp mới được viết thành tên của tệp trước đó.

    Lược đồ này có nghĩa là mọi liên kết cứng khác đến cùng một tệp sẽ không còn trỏ đến tệp hiện tại, mà là phiên bản trước đó (điều này đúng ngay cả trong trường hợp trình soạn thảo xóa tệp cũ, vì trong Unix, "xóa" tệp chỉ có nghĩa là xóa liên kết của nó, chỉ khi liên kết bị xóa là liên kết duy nhất thì tập tin thực sự bị xóa).

  • Vì liên kết cứng đi trực tiếp vào tệp, bạn có thể truy cập tệp đó ngay cả khi bạn không có quyền truy cập vào vị trí ban đầu của tệp đó (ví dụ: vì bạn không có bất kỳ quyền nào trên thư mục mà mục nhập ban đầu nằm trong) . Các quyền duy nhất xác định quyền truy cập của bạn là quyền truy cập của chính tệp đó (được liên kết với tệp chứ không phải với liên kết; bạn không thể tạo liên kết cứng với các quyền khác nhau cho cùng một tệp) và quyền truy cập cho đường dẫn liên kết cứng được chứa trong (về cơ bản, quyền thực thi thư mục mà liên kết nằm trong và bất kỳ thư mục mẹ trực tiếp và gián tiếp nào).

Mặt khác, các liên kết tượng trưng lưu trữ tên đường dẫn (tên của tệp - hay đúng hơn là mục nhập thư mục của nó - có khả năng bao gồm đường dẫn của nó, như /bin/shhoặc subdir/foo.bar) - của một tệp khác. Nếu tên đường dẫn là tương đối, nó luôn được giải thích liên quan đến thư mục mà liên kết được chứa trong đó. Điều đó có nghĩa là:

  • Liên kết tượng trưng có thể đề cập đến các tệp trên một hệ thống tệp khác (ngay cả với hệ thống tệp không hỗ trợ các liên kết cứng hoặc mềm, như FAT).

  • Nếu tệp gốc bị xóa, liên kết tượng trưng không bảo toàn nội dung tệp. Trừ khi có các liên kết cứng khác đến cùng một tệp, nội dung tệp sẽ không còn nữa. Liên kết tượng trưng sau đó sẽ được treo lủng lẳng (nghĩa là đề cập đến một tên đường dẫn không tương ứng với một mục nhập thư mục). Mặt khác, xóa liên kết tượng trưng không ảnh hưởng đến tệp gốc, vì nó chỉ đề cập đến tên đường dẫn của nó.

  • Nếu tệp gốc được di chuyển hoặc đổi tên, liên kết tượng trưng không được cập nhật mà còn lơ lửng. Nếu bạn di chuyển liên kết tượng trưng, ​​nó chỉ bị phá vỡ nếu nó chứa một đường dẫn tương đối và đường dẫn không còn hợp lệ từ vị trí mới.

  • Nếu tệp gốc được thay thế bằng một tệp mới có cùng tên (như trong kịch bản biên tập được mô tả ở trên), liên kết đề cập đến tệp mới.

Hầu hết việc sử dụng các liên kết cứng về cơ bản là một cách để có một bản sao của tệp mà không phải lưu trữ nội dung tệp hai lần. Điều này hoạt động tốt nhất nếu các tệp không bao giờ thay đổi một lần nữa, vì nếu không, rất dễ vô tình phá vỡ liên kết (xem kịch bản biên tập ở trên). Tất nhiên, có những trường hợp bạn muốn liên kết bị hỏng, như trong trường hợp giữ một vài bản sao lưu: Đối với các tệp đã thay đổi trong các bản sao lưu mới hơn, bạn cũng không muốn bản sao trong các bản sao lưu cũ thay đổi.

Thông thường nếu bạn muốn có một liên kết, bạn sẽ sử dụng một liên kết tượng trưng. Một ví dụ là khi bạn di chuyển một thư mục sang một phân vùng khác (vì nó đang đầy), bạn có thể đặt một liên kết mềm từ vị trí cũ sang vị trí mới, vì vậy mọi chương trình cố gắng truy cập thư mục ở vị trí cũ sẽ truy cập nó ở nơi mới thay thế. Điều này sẽ không thể thực hiện được với các liên kết cứng. Tuy nhiên, hãy lưu ý rằng các liên kết tượng trưng trong thư mục đã di chuyển có thể bị hỏng nếu chúng chứa các đường dẫn tương đối dẫn ra khỏi thư mục đã di chuyển.


1

HARD LINK (Chỉ tệp) so với LINK LINK (Tệp hoặc Thư mục) so với BIND (LIÊN KẾT HARD cho Thư mục)

XEM HÌNH ẢNH NÀY TRƯỚC KHI ĐỌC BÀI VIẾT
(nguồn: freesoftwareservers.com )

Trong khi câu trả lời của daxelrod giải thích tốt câu hỏi, tôi nghĩ rằng hình ảnh trong trường hợp này đã tạo ra một sự khác biệt lớn, đặc biệt là đối với những người mới bắt đầu chưa hiểu về inodes và biệt ngữ Linux phức tạp.

Hãy nghĩ về điều này, nếu bạn "xóa" mọi thứ khỏi ổ đĩa của mình, bạn có thể chạy phần mềm để khôi phục dữ liệu, bởi vì 1 và 0 vẫn còn đó, bạn chỉ cần xóa tất cả các Liên kết cứng. Mục đích của Recovery Software là xây dựng lại các Liên kết cứng để hiểu ý nghĩa của 0 và 1

Tôi đã đọc một "một lớp lót" tuyệt vời khiến tất cả đều có ý nghĩa và tôi muốn chia sẻ!

Tất cả các tệp trong Linux là "Liên kết cứng" đến 0 và 1 trên đĩa. Khi bạn tạo dữ liệu (0 & 1), HĐH sẽ tạo Liên kết cứng trong Cây tệp để tham chiếu điểm đó trên đĩa cứng.

Tạo HARD LINK 2 và xóa HARD LINK 1 Tệp gốc :

Bạn có thể tạo một liên kết cứng khác và xóa tệp gốc và bạn vẫn có quyền truy cập vào liên kết cứng mới được tạo.

Xóa TẬP_TIN (HARD LINK 1) được PHẦN MỀM LIÊN KẾT:

Nếu bạn đã xóa HARD LINK 1, bạn có nghĩ LINK LINK sẽ hoạt động không? Không, HĐH sẽ báo cáo lại rằng HARD LINK 1 không tồn tại.

Xóa liên kết phần mềm để liên kết cứng:

Ngược lại, nếu bạn xóa LINK LINK, liệu HARD LINK có hoạt động không? Đúng. Miễn là HĐH có một tệp HARD LINK, nó sẽ báo cáo rằng phần điền chưa bị xóa.

- Cũng đáng nghiên cứu / lưu ý là BIND, một cách để BIND hai thư mục như symlinking hai thư mục, nhưng nó rõ ràng với HĐH (OS có thể biết khi nào bạn Symlink và một số có quy tắc về thời tiết họ có thể theo Symlinks). Nó sử dụng Mount, không phải LS và có thể được cấu hình thông qua FSTAB.

Gắn kết BIND là gì


1
Đó là một nỗ lực khá tham vọng, đặc biệt là cho bài viết đầu tiên. Thật không may, tôi tin rằng việc thêm tài liệu vào "liên kết" (không được yêu cầu) chỉ gây nhầm lẫn các vấn đề; đặc biệt là vì bạn dường như không nỗ lực để giải thích việc gắn kết "liên kết". Ngoài ra, tôi hiểu rất rõ các liên kết cứng và mềm / tượng trưng, ​​và tôi hầu như không hiểu bức tranh của bạn. Tôi sẽ rất ngạc nhiên nếu một người mới bắt đầu có thể học bất cứ điều gì từ nó.
G-Man nói 'Phục hồi Monica'

Mặc dù bạn có thể tạo các thư mục symlink, nhưng nó hiển thị trong hệ thống tệp dưới dạng symlink, nếu bạn BIND, thì nó trong suốt đối với HĐH. Hiển thị giống như một tập tin.
FreeSoftwareServers

1
(1) Trên thực tế, trên ít nhất một số phiên bản Linux, bạn có thể liên kết gắn kết một tệp. (2) Mặc dù các liên kết gắn kết trông rất giống với các liên kết cứng, nhưng nói "Bind đơn giản giống như các liên kết cứng (ngoại trừ bạn không thể liên kết cứng một thư mục)" đơn giản là sai.
G-Man nói 'Phục hồi Monica'

@ G-Man, đã đồng ý và xóa, chỉ với một ghi chú đề cập đến BIND
FreeSoftwareServers

@Free thực sự là liên kết mềm trỏ đến tên tệp (liên kết cứng 1); các sơ đồ, nên làm cho điều này rõ ràng.
JB.

0

Một liên kết cứng sẽ giữ một tệp trên đĩa cho đến khi tất cả các liên kết cứng đến nó, ngay cả đầu tiên ("tên tệp" về mặt kỹ thuật là một liên kết cứng), đã bị xóa. Một liên kết mềm có thể được "treo lủng lẳng" cho đến khi tập tin mà nó trỏ (s / ed) tới được thay thế.


0

Đây là một câu hỏi rất cũ nhưng tôi có một trường hợp sử dụng yêu cầu tôi sử dụng các liên kết cứng.

Tôi là một nhạc sĩ và vì vậy tôi có rất nhiều và rất nhiều tệp âm thanh thuộc nhiều loại khác nhau trên một số ổ đĩa cứng được gắn vào máy Mac của tôi. Terabyte đáng giá. Tôi có chúng hầu hết được tổ chức rất độc đáo với các thư mục symlink để tôi có thể tìm thấy chúng theo nhà xuất bản nội dung, phong cách / âm thanh và các tiêu chí khác dựa trên cách tôi nghĩ lúc đó. Thật không may, một chương trình tôi sử dụng, Ableton Live, hoàn toàn không có khả năng xem bí danh hoặc liên kết tượng trưng từ trình duyệt tệp của nó. Giải pháp duy nhất tôi tìm thấy là tạo các liên kết cứng của các thư mục mà tôi muốn nó có thể xem được, và sau đó mọi thứ hoạt động rất tốt.

Vì vậy, đây là một trường hợp khác khi bạn có thể cần sử dụng các liên kết cứng, điều đó có thể không xảy ra với người khác.


Tôi sẽ nộp báo cáo lỗi cho Ableton Live. Có lẽ họ có thể sửa cái này.
aventurin

Vâng, đã có rất nhiều phàn nàn về vấn đề này trên các diễn đàn abletons trong nhiều năm. Họ dường như không thực hiện bất kỳ nỗ lực nào để giải quyết nó mặc dù tôi không thể hiểu tại sao không.
Jonathan van Clute
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.