Câu trả lời:
Nếu bạn sao chép một tập tin, nó sẽ nhân đôi nội dung. Vì vậy, nếu bạn sửa đổi nội dung của một tệp duy nhất, điều đó không có hiệu lực đối với tệp khác.
Nếu bạn tạo một liên kết cứng, điều đó sẽ tạo ra một tệp trỏ đến cùng một nội dung. Vì vậy, nếu bạn thay đổi nội dung của một trong hai tệp, thay đổi sẽ được nhìn thấy trên cả hai.
Một liên kết cứng về cơ bản là một tên tệp thứ hai cho cùng một tệp. Vì vậy, nếu bạn liên kết cứng một tệp, nó sẽ chỉ một lần trên hệ thống tệp và do đó chỉ chiếm dung lượng một lần. Vì vậy, bạn muốn sử dụng điều này nếu bạn muốn lưu không gian đĩa
Trên các hệ thống tệp unix, mỗi tên tệp thực sự là một liên kết cứng đến vị trí của dữ liệu trên đĩa, được gọi là inode. Nếu bạn tạo một liên kết cứng mới đến một tệp hiện có, nó sẽ không tốn thêm dung lượng trên đĩa vì nó chỉ là một con trỏ khác cho cùng một dữ liệu. Nếu bạn chỉnh sửa dữ liệu bằng một hoặc một liên kết khác (hoặc chỉnh sửa trực tiếp nút), cả hai tệp sẽ bị thay đổi.
Hệ thống giữ một số lượng bao nhiêu liên kết cứng mà mỗi nút có. Khi số lượng liên kết là 0, không thể truy cập tệp và dữ liệu được đánh dấu là an toàn để ghi đè. Vì vậy, đưa ra một tệp có 2 liên kết cứng, nếu bạn xóa một trong hai liên kết, dữ liệu sẽ không bị xóa. Chỉ khi bạn xóa cả hai thì dữ liệu sẽ biến mất.
Bạn có thể thấy số lượng inode của các tệp bằng cách sử dụng -i
chuyển sang ls
lệnh.
Mặt khác, một liên kết mềm chỉ đến một tệp khác bằng tên tệp của nó. Nếu bạn di chuyển hoặc xóa tệp gốc, liên kết sẽ bị hỏng.
Với tham chiếu đến một phần của câu hỏi, "tại sao tôi lại muốn sử dụng các liên kết cứng?":
Các tệp được liên kết cứng (hoặc đối với các vấn đề được liên kết mềm (tượng trưng) cung cấp một cách hữu ích để có một tệp thực thi duy nhất có thể được thực hiện để giả trang cho các mục đích khác nhau.
Đó là, tên mà mã được gọi có thể được kiểm tra để xác định các tùy chọn có sẵn để thực thi. Điều này cho phép phát triển và đóng gói một đoạn mã lớn với tất cả các chức năng được chia sẻ cần thiết cho các mục đích hơi khác nhau. Từ quan điểm của người dùng, đặc điểm kỹ thuật của "cái gì" để chạy (theo tên) giới hạn các lựa chọn và bản trình bày trong một tập hợp con các tùy chọn dễ quản lý hơn.
Một ví dụ kinh điển là LVM. Cùng một lúc HP-UX sử dụng file cứng liên kết cho thực thi khác nhau (ví dụ như vgdisplay
, vgcreate
, vgextend
, vv Hôm nay, như Linux, các lệnh này thực sự mang tính biểu tượng (mềm) liên kết đến các lvm
thực thi.