Liên kết tượng trưng, còn được gọi là liên kết tượng trưng, là một loại tệp đặc biệt trỏ đến tệp hoặc thư mục khác. Nó giống như một phím tắt trong Windows. Một liên kết tượng trưng có thể trỏ đến một tệp hoặc một thư mục trên cùng hoặc một hệ thống tệp hoặc phân vùng khác. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách xóa (xóa) các liên kết tượng trưng trong các hệ thống Linux / UNIX bằng cách sử dụng các lệnh
rm
,
unlink
và
find
lệnh. Trước khi bắt đầu Để xóa liên kết tượng trưng, bạn cần có quyền ghi trên thư mục chứa liên kết tượng trưng. Nếu không, bạn sẽ nhận được lỗi Hoạt động không được phép lỗi. Khi bạn xóa một liên kết tượng trưng, tệp mà nó trỏ đến không bị ảnh hưởng. Sử dụng
ls -l
để kiểm tra xem một tệp đã cho có phải là một liên kết tượng trưng
hay không và để tìm tệp hoặc thư mục mà liên kết tượng trưng trỏ tới.
ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
Ký tự đầu tiên Lv, chỉ ra rằng tệp là một liên kết tượng trưng. Biểu tượng - -> Hiển thị tệp mà các liên kết tượng trưng trỏ tới. Lệnh
rm
loại bỏ các tập tin và thư mục đã cho. Để xóa một liên kết tượng trưng, gọi lệnh
rm
theo sau là tên liên kết tượng trưng làm đối số:
rm symlink_name
Khi thành công, lệnh thoát bằng 0 và không hiển thị đầu ra. Với
rm
bạn có thể xóa nhiều hơn một liên kết tượng trưng cùng một lúc. Để làm điều đó, hãy chuyển tên của các liên kết tượng trưng làm đối số, được phân tách bằng dấu cách:
rm symlink1 symlink2
Để được nhắc trước khi xóa symlink, hãy sử dụng tùy chọn
-i
:
rm -i symlink_name
Để xác nhận loại
y
và nhấn
Enter
.
rm: remove symbolic link 'symlink_name'?
Nếu liên kết tượng trưng trỏ đến một thư mục, không thêm dấu gạch chéo
/
dấu ở cuối. Nếu không, bạn sẽ gặp lỗi:
rm symlink_to_dir/
rm: cannot remove 'symlink_to_dir/': Is a directory
Nếu tên của đối số kết thúc bằng
/
, lệnh
rm
giả định rằng tệp là một thư mục. Lỗi xảy ra bởi vì, khi được sử dụng mà không có tùy chọn
-d
hoặc
-r
,
rm
không thể xóa các thư mục. Để ở bên an toàn, không bao giờ tùy chọn
-r
khi xóa liên kết tượng trưng bằng
rm
. Ví dụ: nếu bạn gõ:
rm -f symlink_to_dir/
Nội dung của thư mục đích sẽ bị xóa. Xóa liên kết tượng trưng bằng
unlink
Lệnh
unlink
xóa một tệp đã cho. Không giống như
rm
,
unlink
chỉ chấp
nhận một đối số duy nhất. Để xóa một liên kết tượng trưng, hãy chạy lệnh
unlink
theo sau là tên symlink làm đối số:
unlink symlink_name
Nếu lệnh thực thi thành công, nó sẽ không hiển thị đầu ra. Không nối dấu gạch chéo
/
dấu ở cuối tên symlink vì
unlink
không thể xóa thư mục. Tìm và xóa các liên kết tượng trưng bị hỏng Để tìm tất cả các liên kết tượng trưng bị
hỏng trong một thư mục nhất định, hãy chạy lệnh sau:
find /path/to/directory -xtype l
/path/to/directory/symlink1 /path/to/directory/subdir/symlink2
Lệnh sẽ liệt kê tất cả các liên kết bị hỏng trong thư mục và các thư mục con của nó.
find /path/to/directory -maxdepth 1 -xtype l
/path/to/directory/symlink1
Khi bạn tìm thấy các liên kết tượng trưng bị hỏng, bạn có thể xóa chúng bằng
rm
hoặc
unlink
theo cách thủ công hoặc sử dụng tùy chọn
-delete
của lệnh
find
:
find /path/to/directory -xtype l -delete
Phần kết luận Để xóa liên kết tượng trưng, sử dụng lệnh
rm
hoặc
unlink
theo sau là tên của liên kết tượng trưng làm đối số. Khi xóa một liên kết tượng trưng trỏ đến một thư mục không gắn dấu gạch chéo vào tên liên kết tượng trưng. rm bỏ liên kết tìm thiết bị đầu cuối Giới thiệu- Trong hệ thống file Linux, một liên kết (link) là một kết nối giữa file name và dữ liệu thực tế trên disk.
- Có hai loại liên kết chính có thể được tạo: "hard" links, và "soft" hay symbolic links. Trước khi tìm hiểu về hard links và symbolic links, có một khái niệm khác cần hiểu rõ là “inode” - một khái niệm cơ bản trong Linux filesystem. Mỗi đối tượng của filesystem được đại diện bởi một inode.
1. InodeTrong Linux, dữ liệu của
các file được chia thành các block. Có nhiều cách tổ chức để liên kết các khối dữ liệu trong một file với nhau, một trong các cách đó là dùng chỉ mục (indexed allocation).
Lệnh tạo liên kết cứng như sau: ln [file nguồn] [file đích]
- 2 file viblo.txt và hardlink.txt có số inode giống nhau là 1326632. Xóa file viblo.txt thì nội dung của file hardlink.txt vẫn còn.
- Nội dung trong hardlink.txt vẫn còn vì khi xóa file viblo.txt hệ thống chỉ xóa đi số link count trong
inode của file đi 1.
- Khi sử dụng lệnh rm để xóa file thì làm giảm đi một hard link. Khi số lượng hard link giảm còn 0 thì không thể truy cập tới nội dung của file được nữa
3. Symbolic linksHầu hết người dùng không muốn tự tạo hoặc sửa đổi các hard links, nhưng các symbolic links là một công cụ hữu ích cho bất kỳ người dùng Linux nào. Symbolic links là một file đặc biệt trỏ đến một file hoặc thư mục khác - được gọi là
target. Khi được tạo, một symbolic links có thể được sử dụng thay cho target file. Nó có thể có một tên độc nhất, và được đặt trong bất kỳ thư mục nào. Nhiều symbolic links thậm chí có thể được tạo cho cùng một target file, cho phép truy cập target bằng nhiều tên khác nhau.
Symbolic link không chứa bản sao dữ liệu của target file. Nó tương tự như một shortcut trong Microsoft Windows: nếu bạn xóa một symbolic link, target sẽ không bị ảnh hưởng. Vì chỉ đơn thuần là một shortcut, symbolic link không dùng đến inode entry. Nó sẽ tạo ra một inode mới và nội dung của inode này trỏ đến tên tập tin gốc. Ngoài ra, nếu target của một symbolic link bị xóa, di chuyển hoặc đổi tên, symbolic link không được cập nhật. Khi điều này xảy
ra, liên kết tượng trưng được gọi là "broken" hoặc "orphaned" và sẽ không còn hoạt động như một liên kết. Lệnh tạo liên kết tượng trưng như sau: ln -s [file nguồn] [file đích]
- 2 file viblo2.txt và softlink.txt có số inode khác nhau lần lượt là 1326634 và 1326630. Xóa file
vibo2.txt thì nội dung của file softlink.txt sẽ không còn.
- Nội dung của softlink.txt không hiển thị được vì softlink.txt trỏ đến một tập tin khác, mà tập tin này không tồn tại.
4. So sánh Hard links và Symbolic links
Hard links | Symbolic links |
---|
Chỉ liên kết được tới file, không liên kết được tới thư mục
| Có thể liên kết được tới thư mục
| Không tham chiếu được tới file trên ổ đĩa khác
| Có thể tham chiếu tới file/thư mục khác ổ đĩa
| Liên kết tới một file vẫn còn ngay cả khi file đó đã được di chuyển
| Liên kết không còn tham chiếu được nữa nếu file được di chuyển
| Được liên kết với inode tham chiếu vật lý trên ổ cứng nơi chứa file
| Liên kết tham chiếu tên file/thư mục trừu tượng mà không phải địa chỉ vật lý. Chúng được cung cấp inode riêng của mình
| Có thể làm việc với mọi ứng dụng
| Một số ứng dụng không cho phép symbolic link
|
Referenceshttps://en.wikipedia.org/wiki/Inode https://www.computerhope.com/issues/ch001638.htm https://www.nixtutor.com/freebsd/understanding-symbolic-links/ |