Hướng dẫn này giải thích symlink là gì, tại sao nên dùng, và cách tạo/sử dụng trong Linux.
Symlink (Symbolic Link) là tương đương "shortcut" (lối tắt) trong Windows – nhưng mạnh mẽ hơn: hoạt động ở cấp hệ thống tệp, trong suốt cho mọi ứng dụng, có thể trỏ đến tệp hoặc thư mục, thậm chí trên phân vùng/ổ đĩa khác.
Tạo symlink
# ln -s /var/www/html/application/configuration/images/config.php /var/www/html/image-config.php
- ln: Lệnh tạo liên kết (link).
- -s: Tạo symbolic link (mặc định không có -s là hard link – ít dùng hơn).
- Tham số 1 (source): Đường dẫn đích thực tế (target).
- Tham số 2 (destination link): Đường dẫn symlink bạn muốn tạo.
Cú pháp dễ nhớ: ln -s <nguồn_thực_tế> <liên_kết_mới>
Kiểm tra symlink
# ls -l /var/www/html/image-config.php
lrwxrwxrwx 1 calvin calvin 37 Apr 29 16:41 image-config.php -> /var/www/html/application/configuration/images/config.php
- Ký tự l đầu tiên = symbolic link.
- Mũi tên
->chỉ hướng đến target.
Symlink thư mục
# ln -s /var/www/html/project_v2 /var/www/html/current
Rất hữu ích cho triển khai (deployment): chỉ cần đổi symlink current trỏ sang version mới – rollback tức thì.
Các thao tác thường gặp
| Thao tác | Lệnh |
|---|---|
| Xem target của symlink | readlink -f symlink_name hoặc realpath symlink_name |
| Xóa symlink (không xóa target) | rm symlink_name hoặc unlink symlink_name |
| Cập nhật symlink trỏ đích mới | ln -sfn /new/target symlink_name (-f force, -n no-dereference) |
| Tìm symlink hỏng (broken) | find /path -xtype l |
Symlink vs Hard Link
| Đặc điểm | Symbolic Link | Hard Link |
|---|---|---|
| Trỏ đến | Đường dẫn (tên tệp) | Inode (dữ liệu vật lý) |
| Liên kết thư mục | ✅ Có | ❌ Không (trên hầu hết FS) |
| Cross filesystem | ✅ Có | ❌ Không |
| Target bị xóa | Link hỏng (dangling) | Dữ liệu vẫn tồn tại |
| ls -l hiển thị | l... -> target | Giống tệp thường, link count > 1 |
Ứng dụng thực tế
- Rút gọn đường dẫn dài cho script/cron.
- Quản lý version ứng dụng (current → v1.2, v1.3...).
- Chia sẻ thư mục cấu hình giữa user/container.
- Tương thích ngược: link tên cũ trỏ sang tên mới.