Cách tạo liên kết cứng và mềm – RHEL 8 RHCSA

Tác giả sysadmin, T.M.Hai 19, 2022, 11:29:04 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách tạo liên kết cứng và mềm – RHEL 8 RHCSA


Trong Linux, các liên kết cho phép chúng tôi tham chiếu đến một tệp đích bằng một nguồn khác - liên kết. Khi liên kết được truy cập, chúng tôi được chuyển hướng đến mục tiêu đã xác định.

Trong các ví dụ này, chúng tôi sẽ đề cập đến mục tiêu "Tạo liên kết cứng và mềm" của Red Hat Certified System Administrator (RHCSA).

1. Tạo liên kết cứng

Trong các ví dụ này, chúng ta sẽ xử lý hai loại liên kết, liên kết mềm và liên kết cứng. Chúng tôi sẽ sử dụng lệnh 'ln' để tạo cả hai loại liên kết.

Mọi tệp trên hệ thống tệp về cơ bản là một liên kết cứng đến một inode. Một inode (nút chỉ mục) là một cấu trúc dữ liệu mô tả một đối tượng, chẳng hạn như một tệp hoặc thư mục. Inode lưu trữ dữ liệu thực tế của đối tượng, trong khi liên kết cứng là thứ thực sự trỏ đến inode.

Ví dụ: nếu chúng ta tạo một tệp mới:

Mã nguồn [Chọn]
[root@rhel8 ~]# echo "testing" > /root/testing
Tệp '/root/testing' đã được tạo và về cơ bản là một liên kết cứng tới inode chứa chuỗi "testing".

Tạo một liên kết cứng mới tạo ra một đối tượng khác trỏ đến cùng một nút. Bạn có thể có nhiều liên kết cứng trỏ đến một nút, miễn là một liên kết cứng vẫn tồn tại, tệp thực tế sẽ vẫn tồn tại trên hệ thống tệp.

Ví dụ này sử dụng lệnh 'ln' để tạo một liên kết cứng mới.

Mã nguồn [Chọn]
[root@rhel8 ~]# ln /root/testing /root/hardlink
Tệp /root/hardlink trỏ đến cùng một inode như /root/testing, đó là lý do tại sao nó chỉ xuất hiện dưới dạng một tệp khác trên hệ thống tệp:

Mã nguồn [Chọn]
[ root@rhel8 ~]# ls -la /root
-rw-r--r--.  2 root root 8 May 13 07:05 hardlink
-rw-r--r--.  2 root root 8 May 13 07:05 testing

Lưu ý '2' trước quyền sở hữu của người dùng và nhóm, điều này đề cập đến thực tế là tệp có hai liên kết cứng với nó, vì cả hai hiện đang trỏ đến cùng một inode.

Chúng tôi có thể xác nhận điều này bằng cách xem nội dung của liên kết cứng:

Mã nguồn [Chọn]
[root@rhel8 ~]# cat /root/hardlink
testing

Nếu chúng tôi xóa tệp /root/testing ban đầu, dữ liệu sẽ vẫn có thể truy cập được qua /root/hardlink

Mã nguồn [Chọn]
[ root@rhel8 ~]# rm -f /root/testing
[ root@rhel8 ~]# ls -la /root/hardlink
-rw-r--r--. 1 root root 8 May 13 07:05 /root/hardlink

Bây giờ /root/testing đã bị xóa, '2' từ trước đó giờ là '1', vì /root/hardlink là liên kết cứng duy nhất đến inode chứa chuỗi 'testing'. Nếu chúng tôi xóa liên kết cuối cùng, dữ liệu sẽ bị xóa.

Vì các liên kết cứng trỏ đến cùng một dữ liệu thô, nếu chúng tôi chỉnh sửa nội dung của tệp thông qua một liên kết cứng, sau đó cố gắng chỉnh sửa tệp thông qua một liên kết cứng khác, các thay đổi từ lần chỉnh sửa đầu tiên sẽ ở đó – chúng tôi không sao chép các tệp như với lệnh 'cp', chúng tôi sẽ liên kết đến cùng một vị trí trên đĩa nhiều lần.

Liên kết cứng chỉ hoạt động trên cùng một hệ thống tệp, không thể tạo liên kết cứng trên một hệ thống tệp với thứ gì đó trên một hệ thống tệp riêng biệt. Tuy nhiên, điều này có thể xảy ra với các liên kết tượng trưng.

2. Liên kết mềm

Trong khi các liên kết cứng trỏ đến inode trực tiếp, thì một liên kết mềm, còn được gọi là liên kết tượng trưng hoặc gọi tắt là liên kết tượng trưng, chỉ hoạt động như một chuyển hướng. Nếu bạn mở một liên kết mềm, bạn sẽ được chuyển hướng đến vị trí mà liên kết mềm trỏ đến. Liên kết tồn tại độc lập với tệp mà nó trỏ tới. Nếu tệp gốc bị xóa, liên kết sẽ vẫn tồn tại, mặc dù trỏ đến một vị trí không còn tồn tại. Tương tự như vậy nếu liên kết mềm bị xóa, nó không ảnh hưởng đến tệp mà liên kết trỏ đến.

Ví dụ sau đây cho thấy cách tạo liên kết mềm bằng lệnh 'ln'. Cú pháp gần giống với ví dụ về liên kết cứng đã trình bày trước đây, ngoại trừ cờ '-s' được sử dụng để xác định rằng đây là một liên kết tượng trưng, thay vì một liên kết cứng là mặc định.

Trong ví dụ này, chúng tôi sẽ tạo một liên kết mềm tới liên kết cứng trước đó của chúng tôi, mặc dù bây giờ chúng ta đã biết liên kết cứng về cơ bản là một tệp bình thường trên hệ thống tệp Linux.

Mã nguồn [Chọn]
[root@rhel8 ~]# ln -s /root/hardlink /root/softlink
Bây giờ hãy xem những gì chúng tôi đã tạo ra:

Mã nguồn [Chọn]
[root@rhel8 ~]# ls -la /root/softlink
1 root root 14 May 13 07:11 /root/softlink -> /root/hardlink

Chúng ta có thể thấy rằng /root/softlink đã được tạo và chuyển hướng có thể được xác định bằng biểu tượng mũi tên '->', trong trường hợp này trỏ đến tệp bên dưới /root/hardlink.

Bây giờ nếu chúng ta thử và truy cập vào liên kết mềm, chúng ta sẽ truy xuất nội dung mà chúng ta đã tạo trước đó bằng lệnh echo trong phần liên kết cứng ở trên.

Mã nguồn [Chọn]
[root@rhel8 ~]# cat /root/softlink
testing

Thành công! Đây là văn bản ban đầu chúng tôi đã tạo trong tệp /root/testing, trước khi tạo liên kết cứng của chúng tôi (về cơ bản chỉ là một tham chiếu khác đến inode thực tế có chứa chuỗi 'testing').

Đây là những gì chúng tôi đã làm cho đến nay trong một sơ đồ:


Nếu chúng ta di chuyển hoặc đổi tên liên kết cứng, nó vẫn trỏ đến inode chứa chuỗi và có thể truy cập được, tuy nhiên liên kết mềm sẽ không thành công, vì nó đang trỏ đến tên của tệp '/root/hardlink' chứ không phải inode.

Tương tự như vậy, nếu chúng ta xóa tệp mà liên kết mềm trỏ tới, liên kết mềm sẽ vẫn tồn tại, tuy nhiên nội dung đã biến mất nên việc cố gắng truy cập đích thông qua liên kết mềm không thành công:

Mã nguồn [Chọn]
[ root@rhel8 ~]# rm -f /root/hardlink
[ root@rhel8 ~]# ls -la /root/softlink
lrwxrwxrwx. 1 root root 14 May 13 07:18 /root/softlink -> /root/hardlink

[root@rhel8 ~]# cat /root/softlink
cat: /root/softlink: No such file or directory

Ta cũng có thể dọn dẹp và xóa soft link mà không ảnh hưởng đến file mà nó trỏ tới như sau:

Mã nguồn [Chọn]
[ root@rhel8 ~]# rm /root/softlink
rm: remove symbolic link '/root/softlink'?

Điều này sẽ giữ nguyên điểm đến của liên kết, chỉ có liên kết mềm sẽ bị xóa.

Không giống như các liên kết cứng, các liên kết mềm có thể giao nhau giữa các hệ thống tệp khác nhau. Ngoài ra, các liên kết mềm có thể trỏ đến các thư mục, tuy nhiên các liên kết cứng thì không.

Nếu bạn quên cú pháp, bạn chỉ cần tham khảo trang hướng dẫn thông qua 'man ln' trong kỳ thi.

Vậy là xong, bây giờ bạn đã hiểu cơ bản về cách tạo liên kết cứng và mềm trong RHEL 8 cho kỳ thi RHCSA. Đảm bảo rằng bạn tự mình thực hành các ví dụ này để hiểu đầy đủ về cách thức hoạt động của các lệnh.