Không, một liên kết cứng là hoàn toàn khác nhau. Liên kết mềm gần với phím tắt Windows hơn (mặc dù có những khác biệt quan trọng, liên kết tượng trưng tương tự như phím tắt Windows hơn so với liên kết cứng). Một liên kết cứng là một điều khác biệt và bạn sẽ không bao giờ cần.
Tóm lại, một liên kết mềm được tạo bằng lệnh này:
ln -s foo bar
Nếu bạn sau đó chạy ls -l
, bạn sẽ thấy:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Có ->
nghĩa bar
là một liên kết đến foo
. Vì vậy, mở bar
, với một trình soạn thảo văn bản chẳng hạn, sẽ thực sự mở tệp riêng biệt foo
. Tuy nhiên, xóa bar
sẽ chỉ xóa các phím tắt, nó sẽ không ảnh hưởng đến tập tin foo
.
Mặt khác, các liên kết cứng được tạo bằng lệnh này:
ln foo bar
Nếu bây giờ bạn chạy ls -l
, không có dấu hiệu cho thấy bất kỳ mối quan hệ nào giữa các tệp:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Tuy nhiên, và điều này rất quan trọng, những người này thực sự là cùng một tập tin . Các tệp trên hệ thống tệp Unix được lưu trữ bằng cách sử dụng inodes ; một inode về cơ bản là cách hệ thống tập tin ánh xạ tên tệp đến một vị trí cụ thể trên ổ cứng vật lý. Vì vậy, các liên kết cứng là các tệp trỏ đến cùng một nút với mục tiêu của chúng. Một cách khác để đặt điều này là tất cả các tệp thực sự là các liên kết cứng trỏ đến các nút của chúng. Tạo một liên kết cứng đến một tệp chỉ cần tạo một con trỏ (tệp) mới trên hệ thống tệp trỏ đến cùng một nút. Mỗi inode có thể có nhiều tệp trỏ đến nó hoặc một hoặc không.
Để hiểu rõ hơn về điều này, hãy sử dụng ls -i
phần hiển thị inode được liên kết với một tệp. Hãy tạo một liên kết mềm và một liên kết cứng và xem điều gì sẽ xảy ra:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Bây giờ, hãy kiểm tra các nút của họ:
Như bạn có thể thấy ở trên, cả hai foo
và HardLinkToFoo
có cùng một nút (16648029) trong khi SoftLinkToFoo có một cái khác (16648036).
Điều gì xảy ra nếu chúng ta đổi tên foo
với mv foo bar
?
Màu đỏ biểu thị một liên kết mềm bị hỏng, một liên kết không thể tìm thấy mục tiêu. Điều này là do các liên kết mềm trỏ đến tên của tệp chứ không phải inode của nó. Lưu ý rằng mặc dù thay đổi tên, inode vẫn giữ nguyên nên liên kết cứng vẫn ổn, nó vẫn hoạt động.
Tóm lại, liên kết cứng thực sự là hai biểu hiện của cùng một tệp; chúng là các con trỏ tới cùng một phần của đĩa. Liên kết mềm chỉ là lối tắt. Để có một sự tương tự trong thế giới thực, các liên kết cứng giống như hai số điện thoại khác nhau cho cùng một dòng điện thoại và các liên kết mềm giống như có hai dòng điện thoại khác nhau trong cùng một nhà.