Tuesday , 30 April 2024
HOT

Tìm hiểu hard link và soft link trên Linux

Hard Link và Soft Link trên Linux là 2 khái niệm khá phức tạp nhưng rất hay. Hay vì nếu hiểu được các nguyên tắc cơ bản của hệ thống file thì ta thấy phân biệt nó đơn giản hơn nhiều.

Một số điểm cần nắm trước:

  • Về phía người sử dụng, file chứa data và được phân biệt với nhau bằng file name.
  • Về phía hệ thống, file được phân biệt bằng chỉ số index node, viết tắt là inode. Mỗi file name có 1 inode đi kèm. Chỉ số inode tham chiếu đến 1 vùng nhớ trong đó có chứa địa chỉ vùng nhớ lưu trữ data.
Hard Link

 

Hard Link

Hard Link

 

File gốc có tên là filename, số inode là inode#, vùng dữ liệu là data.

Khi tạo hard link với tên là othername thì inode đi kèm với nó sẽ chính là inode# của filename. Vì cùng inode# nên sẽ cùng tham chiếu đến 1 vùng nhớ chứa địa chỉ của data do đó có cùng tham chiếu đến vùng data.

Soft Link

Soft Link

Soft Link

 

Khi tạo soft link với tên là othername thì inode đi kèm sẽ là 1 inode# khác. Inode# này tham chiếu đến vùng nhớ chứa địa chỉ dẫn đến vùng data của soft link. Trong data này chứa đường dẫn đến file gốc.

Đây là điểm khác biệt cơ bản nhất của Hard Link và Soft Link. Từ đó ta có thể giải thích được tất cả những khác biệt khác, chẳng hạn chuyện gì xảy ra khi xóa file gốc.

Thực hành:

[abel@centos ~]$ echo “Original” > original.file
[abel@centos ~]$ ln original.file hardlink.file
[abel@centos ~]$ ln -s original.file softlink.file
[abel@centos ~]$ ls -il
total 20
588105 -rw-rw-r– 2 abel abel 9 Jan 12 04:04 hardlink.file
588105 -rw-rw-r– 2 abel abel 9 Jan 12 04:04 original.file
588106 lrwxrwxrwx 1 abel abel 13 Jan 12 04:04 softlink.file -> original.file

[abel@centos ~]$ cat original.file
Original
[abel@centos ~]$ cat hardlink.file
Original
[abel@centos ~]$ cat softlink.file
Original
[abel@centos ~]$ rm -f original.file
[abel@centos ~]$ cat hardlink.file
Original
[abel@centos ~]$ cat softlink.file
cat: softlink.file: No such file or directory

Nguồn: k y t h u a t m a y t i n h

Leave a Reply

Your email address will not be published. Required fields are marked *

*