Giới thiệu
Trong lab này, bạn sẽ học cách tạo và quản lý các liên kết tượng trưng, còn được gọi là symlink, trong Linux. Liên kết tượng trưng là một loại tệp đặc biệt đóng vai trò là tham chiếu đến một tệp hoặc thư mục khác, cho phép bạn truy cập tệp hoặc thư mục đích thông qua symlink. Bạn sẽ hiểu sự khác biệt giữa liên kết tượng trưng và liên kết cứng, đồng thời khám phá các trường hợp sử dụng thực tế của liên kết tượng trưng.
Lab này bao gồm các bước sau: tạo và quản lý liên kết tượng trưng, hiểu sự khác biệt giữa liên kết tượng trưng và liên kết cứng, và khám phá các trường hợp sử dụng thực tế của liên kết tượng trưng. Bạn sẽ học cách tạo một liên kết tượng trưng, truy cập tệp đích thông qua liên kết tượng trưng và quan sát hành vi của liên kết tượng trưng khi tệp đích bị sửa đổi hoặc xóa.
Tạo và quản lý liên kết tượng trưng
Trong bước này, bạn sẽ học cách tạo và quản lý liên kết tượng trưng, còn được gọi là symlink, trong Linux. Liên kết tượng trưng là một loại tệp đặc biệt đóng vai trò là tham chiếu đến một tệp hoặc thư mục khác, cho phép bạn truy cập tệp hoặc thư mục đích thông qua symlink.
Đầu tiên, hãy tạo một thư mục và một tệp để làm việc:
mkdir ~/project/source
touch ~/project/source/file.txt
Bây giờ, hãy tạo một liên kết tượng trưng đến tệp file.txt
:
ln -s ~/project/source/file.txt ~/project/symlink.txt
Ví dụ đầu ra:
labex@ubuntu:~/project$ ls -l
total 0
lrwxrwxrwx 1 labex labex 22 May 24 12:34 symlink.txt -> /home/labex/project/source/file.txt
-rw-r--r-- 1 labex labex 0 May 24 12:34 source/file.txt
Tùy chọn -s
trong lệnh ln
tạo một liên kết tượng trưng. Đối số đầu tiên là tệp đích và đối số thứ hai là tên của symlink.
Bạn có thể truy cập tệp file.txt
thông qua symlink symlink.txt
:
cat ~/project/symlink.txt
Ví dụ đầu ra:
labex@ubuntu:~/project$ cat ~/project/symlink.txt
Như bạn có thể thấy, lệnh cat
hoạt động giống như khi bạn truy cập trực tiếp vào tệp file.txt
.
Hãy thử sửa đổi tệp đích và xem symlink hoạt động như thế nào:
echo "Hello, World!" >> ~/project/source/file.txt
cat ~/project/symlink.txt
Ví dụ đầu ra:
labex@ubuntu:~/project$ echo "Hello, World!" >> ~/project/source/file.txt
labex@ubuntu:~/project$ cat ~/project/symlink.txt
Hello, World!
Nội dung của symlink phản ánh những thay đổi được thực hiện đối với tệp đích.
Bây giờ, hãy xóa tệp đích và xem điều gì xảy ra với symlink:
rm ~/project/source/file.txt
ls -l ~/project/symlink.txt
Ví dụ đầu ra:
labex@ubuntu:~/project$ rm ~/project/source/file.txt
labex@ubuntu:~/project$ ls -l ~/project/symlink.txt
lrwxrwxrwx 1 labex labex 22 May 24 12:34 /home/labex/project/symlink.txt -> /home/labex/project/source/file.txt
Symlink vẫn tồn tại, nhưng bây giờ nó trỏ đến một tệp không tồn tại. Cố gắng truy cập symlink sẽ dẫn đến lỗi.
Tóm lại, bạn đã học cách tạo và quản lý liên kết tượng trưng trong Linux, và cách chúng hoạt động khi tệp đích được sửa đổi hoặc xóa.
Hiểu sự khác biệt giữa liên kết tượng trưng và liên kết cứng
Trong bước này, bạn sẽ học những khác biệt chính giữa liên kết tượng trưng (mềm) và liên kết cứng trong Linux.
Đầu tiên, hãy tạo một liên kết cứng đến tệp file.txt
:
ln ~/project/source/file.txt ~/project/hardlink.txt
Ví dụ đầu ra:
labex@ubuntu:~/project$ ls -l
total 4
-rw-r--r-- 2 labex labex 14 May 24 12:34 file.txt
lrwxrwxrwx 1 labex labex 22 May 24 12:34 symlink.txt -> /home/labex/project/source/file.txt
-rw-r--r-- 2 labex labex 14 May 24 12:34 hardlink.txt
Như bạn có thể thấy, liên kết cứng hardlink.txt
có cùng số inode với tệp file.txt
gốc, cho biết rằng cả hai đều tham chiếu đến cùng một tệp vật lý trên đĩa.
Bây giờ, hãy so sánh hành vi của liên kết tượng trưng và liên kết cứng:
-
Xóa tệp đích:
- Nếu bạn xóa tệp
file.txt
gốc, liên kết tượng trưngsymlink.txt
sẽ trở thành một liên kết "treo", trỏ đến một tệp không tồn tại. - Nếu bạn xóa tệp
file.txt
gốc, liên kết cứnghardlink.txt
vẫn sẽ hoạt động, vì nó tham chiếu đến cùng một tệp vật lý.
- Nếu bạn xóa tệp
-
Sử dụng dung lượng đĩa:
- Liên kết tượng trưng không tiêu thụ thêm dung lượng đĩa, vì chúng chỉ chứa đường dẫn đến tệp đích.
- Liên kết cứng chia sẻ cùng một tệp vật lý trên đĩa, vì vậy chúng không tiêu thụ thêm dung lượng đĩa.
-
Liên kết giữa các thiết bị:
- Liên kết tượng trưng có thể trỏ đến các tệp hoặc thư mục trên các hệ thống tệp hoặc thiết bị khác nhau.
- Liên kết cứng chỉ có thể được tạo trong cùng một hệ thống tệp, vì chúng tham chiếu đến cùng một tệp vật lý.
-
Loại tệp:
- Liên kết tượng trưng là một loại tệp đặc biệt, được xác định bằng loại tệp
l
trong đầu rals -l
. - Liên kết cứng là các tệp thông thường và chúng không thể phân biệt được với tệp gốc trong đầu ra
ls -l
.
- Liên kết tượng trưng là một loại tệp đặc biệt, được xác định bằng loại tệp
Tóm lại, sự khác biệt chính là liên kết tượng trưng là một tham chiếu đến tệp đích, trong khi liên kết cứng là một tên thay thế cho cùng một tệp vật lý trên đĩa. Liên kết tượng trưng linh hoạt hơn nhưng có thể trở thành liên kết treo, trong khi liên kết cứng mạnh mẽ hơn nhưng bị giới hạn trong cùng một hệ thống tệp.
Các trường hợp sử dụng thực tế của liên kết tượng trưng
Trong bước cuối cùng này, bạn sẽ khám phá một số trường hợp sử dụng thực tế cho liên kết tượng trưng trong Linux.
1. Liên kết tệp cấu hình
Liên kết tượng trưng có thể được sử dụng để quản lý tệp cấu hình hiệu quả hơn. Ví dụ: bạn có thể tạo một symlink từ /etc/nginx/sites-available/my-site.conf
đến /etc/nginx/sites-enabled/my-site.conf
để kích hoạt cấu hình trang web Nginx mới mà không cần phải sao chép tệp.
sudo ln -s /etc/nginx/sites-available/my-site.conf /etc/nginx/sites-enabled/my-site.conf
2. Liên kết thư mục
Liên kết tượng trưng có thể được sử dụng để tạo lối tắt đến các thư mục, giúp bạn dễ dàng truy cập các vị trí thường xuyên sử dụng. Ví dụ: bạn có thể tạo một symlink từ ~/documents
đến ~/project/important-files
.
ln -s ~/project/important-files ~/documents
3. Liên kết tệp thực thi
Liên kết tượng trưng có thể được sử dụng để tạo lối tắt đến các tệp thực thi, giúp chúng có thể truy cập từ các vị trí khác nhau trong hệ thống tệp. Điều này đặc biệt hữu ích khi bạn muốn chạy một lệnh từ bất kỳ thư mục nào mà không cần chỉ định đường dẫn đầy đủ.
sudo ln -s /usr/local/bin/my-script.sh /usr/bin/my-script
Bây giờ, bạn có thể chạy my-script
từ bất kỳ thư mục nào trên hệ thống.
4. Liên kết thư viện
Liên kết tượng trưng có thể được sử dụng để quản lý các thư viện dùng chung hiệu quả hơn. Ví dụ: bạn có thể tạo một symlink từ một phiên bản thư viện cụ thể đến một tên chung, cho phép các ứng dụng của bạn sử dụng phiên bản mới nhất mà không cần sửa đổi mã.
sudo ln -s /usr/lib/libmylib.so.1.2.3 /usr/lib/libmylib.so
Đây chỉ là một vài ví dụ về cách liên kết tượng trưng có thể được sử dụng trong các tình huống thực tế. Tính linh hoạt và dễ sử dụng của symlink khiến chúng trở thành một công cụ mạnh mẽ trong kho quản lý hệ thống tệp Linux.
Tóm tắt
Trong lab này, bạn đã học cách tạo và quản lý các liên kết tượng trưng (symlink) trong Linux. Symlink là một loại tệp đặc biệt đóng vai trò là tham chiếu đến một tệp hoặc thư mục khác, cho phép bạn truy cập tệp hoặc thư mục đích thông qua symlink. Bạn đã tạo một symlink đến một tệp và quan sát cách các thay đổi đối với tệp đích được phản ánh trong symlink. Ngoài ra, bạn đã học được rằng khi tệp đích bị xóa, symlink vẫn còn nhưng trỏ đến một tệp không tồn tại. Lab này cũng bao gồm sự khác biệt giữa liên kết tượng trưng và liên kết cứng, đồng thời cung cấp các trường hợp sử dụng thực tế cho symlink.