Trên hệ thống Linux làm việc, giả sử bạn có file lồng trong nhiều lớp thư mục. Để dễ truy cập file đó, bạn muốn tạo shortcut cho file trên desktop. Có thể dùng symlink (còn gọi soft link). Cũng có dạng link khác gọi là hard link. Bài này giải thích khác biệt giữa soft và hard link và xem cái nào nên dùng.
Soft Link Vs Hard Link
Soft link, hay symlink, chỉ là symbolic link (liên kết tượng trưng). Nó đơn giản là con trỏ đến đường dẫn file mục tiêu. Soft link không quan tâm file hoặc thư mục tại đường dẫn có thực sự tồn tại. Nếu file/thư mục không tồn tại, chỉ dẫn đến symlink bị hỏng. Bạn có thể chỉnh sửa hoặc xóa symlink, nó không ảnh hưởng file mục tiêu.
Mặt khác, hard link có hiệu lực给目标文件一个额外的名称。当你编辑其中一个文件的内容时,另一个文件的内容也会被修改。简而言之,软链接只是对目标文件路径的引用,而硬链接是对目标文件数据的直接链接。
Dưới đây chúng ta minh họa cách soft và hard link hoạt động.
Soft Link Trong Hành Động
Giả sử ta có file "first_file.txt" có bốn dòng văn bản.
Chúng ta tạo soft link trong thư mục Home.
ln -s first_file.txt ~/sl-firstfile.txt
Trong môi trường desktop GNOME, soft link cho file có thể tạo bằng chuột phải file và chọn "Create Link" (Tạo liên kết). Soft link tạo ra tên tương tự "Link to
Nếu xem nội dung "sl-firstfile.txt", thấy nó giống "first_file.txt".
Nếu xem hai file trong Trình quản lý file, soft link xuất hiện như shortcut đến file gốc. Mũi tên đen trong biểu tượng file chỉ điều này.
Khi xem danh sách thư mục hiện tại bằng ls -l, thấy soft link trỏ đến file mục tiêu. Ký tự đầu trong chuỗi quyền cho "sl-firstfile.txt" là "l", nghĩa là mục này là link.
Hành Vi Xóa Của Soft Link
Khi file mục tiêu bị xóa, soft link vẫn còn.
Tuy nhiên, nó trở thành link "dangling" (treo lơ lửng) hoặc "broken" (hỏng) và vô dụng.
Giờ, nếu tạo file khác cùng tên – "first_file.txt" – soft link sẽ hoạt động lại.
Lưu ý: nếu gặp soft link và muốn tìm đường dẫn tuyệt đối file link được tạo cho, chỉ dùng lệnh readlink như dưới.
Đầu ra lệnh này là đường dẫn tuyệt đối file gốc.
Hard Link Trong Hành Động
Giờ tạo hard link cho cùng file trong thư mục Home. Làm bằng lệnh:
ln first_file.txt hl-first-file.txt
Lưu ý: cả hai phương pháp tạo soft và hard link dùng lệnh ln. Chỉ khác cờ -s chỉ symbolic link.
Cách khác tạo hard link là dùng lệnh link.
link hl-firstfile.txt hl2-firstfile.txt
Kiểm tra cả hai file cho thấy nội dung giống nhau.
Trong GUI, cả hai file xuất hiện như thực thể riêng biệt. Không có chỉ báo về sự tồn tại hard link.
Hãy thử thêm dòng mới vào file hard link "hl-firstfile.txt".
echo "hello" >> hl-first-file.txt
Thay đổi dữ liệu xem được trong cả hai file.
Khi hard link được tạo, như thể hai file khác nhau tồn tại, nhưng dữ liệu liên kết. Thay đổi trong cái này phản chiếu cái kia.
Mẹo nhanh: khi tạo soft link và hard link, tốt nhất dùng cùng phần mở rộng với file link được tạo cho.
Hành Vi Xóa Của Hard Link
Đối với hard link, xóa file gốc hoặc hard link không thành vấn đề. Dữ liệu ban đầu lưu trên file vẫn truy cập được qua hard link.
Khi Nào Soft Link Hữu Ích?
Chúng ta thấy soft link xuất hiện như shortcut cho file. Khi có file trong nhiều lớp thư mục và muốn lưu ở vị trí dễ truy cập, lựa chọn tốt là tạo short link cho nó.
Khi Nào Hard Link Hữu Ích?
Chúng ta thấy một khi hard link tạo cho file, bất kỳ thay đổi file hoặc hard link đều phản chiếu trong cả hai.
Giả sử bạn có server backup. Cơ chế backup tăng dần dùng nơi chỉ thay đổi file/thư mục phản chiếu kể từ backup cuối. Bạn tạo hard link giữa file trong server và bản sao tương ứng trong máy tính. Khi backup xảy ra, thay đổi file trong máy tính tự động phản chiếu đến file hard-linked tương ứng trong server, ngay cả khi file đổi tên.
Kết Luận
Cả soft và hard link đều có dùng riêng và nên dùng trong tình huống khác nhau. Hiểu khác biệt giúp bạn quyết định tốt hơn khi tạo link. Soft link và hard link có thể tạo cho thư mục. Mặc dù soft link tạo được xuyên hệ thống file, hard link chỉ tạo trong cùng hệ thống file.