Hard Link và Symbolic Link(SymLink) (Liên kết cứng và liên kết mềm)

Các lệnh có thể dùng: ln, ls, touch, mkdir

1.Tên tập tin
Trong linux tên tập tin có thể dài 255 ký tự bao gồm bất kỳ ký tự nào trừ ký tự có mã bằng 0 và ký tự dấu gạch chéo (/). Tuy nhiên còn có nhiều ký tự nữa có ý nghĩa đặc biệt trong hệ vỏ shell và do đó không nên dùng để đặt tên tập tin như :
! @ # $ & ~ % * ( ) [ ] { } ’ ” \ : ; > < ‘ dấu cách
Có thể dùng dấu \ để xóa bỏ ý nghĩa đặc biệt của các kí tự và đặt tên cho tập tin bằng những kí tự đặc biệt đó.
Ví dụ :

touch a b

Câu lệnh này sẽ tạo ra 2 file là ab
Tuy nhiên tôi sử dụng : \ để bỏ ý nghĩa đặc biệt của dấu cách

touch a\ b

Khi đó tôi sẽ thu được 1 file là a b
Cũng có thể dùng dấu ‘ hay ” (phím gần phím Enter) để đặt tên có dấu cách :
VD :

touch "a b"

sẽ tạo ra file a b
Dấu \ cũng bỏ ý nghĩa đặc biệt của chính nó
Ví dụ sau sẽ tạo ra một thư mục tên là bill\gates ở Desktop

mkdir ~/Desktop/bill\\gates

Riêng với trường hợp phím Enter. Dấu \ xóa bỏ hẳn ý nghĩa thực thi câu lệnh của phím này
Do đó có thể lợi dụng dấu \ để xuống dòng một lệnh quá dài
VD :

sudo \
apt-get autoclean

2. Liên kết cứng (Hard Link)
Mỗi tập tin trong Linux có một “chỉ số ký hiệu” (index descriptor) tương ứng, hay còn gọi là “inode”
Tên của bất kỳ tập tin nào trong Linux chính là liên kết đến chỉ số inode của tập tin
Vì thế mỗi tập tin có thể có bao nhiêu tên tùy thích. Những tên này còn được gọi là liên kết “cứng” (hard link)

Có vẻ như chúng ta đang có nhiều cái tên cho 1 file. Khi truy xuất và chỉnh sửa file từ một hardlink thì những hardlink khác cũng được đồng bộ hóa theo. Dễ hiểu là vì chúng đều trỏ tới 1 chỉ số inode-đại diện thực sự cho một file có trong hệ thống
Ý nghĩa của hard link là chúng ta có thể truy xuất 1 file từ nhiều chỗ khác nhau. Dùng từ “đồng bộ” thì có lẽ không chính xác. Vì chúng ta chỉ có 1 fle duy nhất

Lệnh ls với tham số -l sẽ cho chúng ta biết có bao nhiêu hard link cùng trỏ tới 1 file. Nói cách khác : File đang muốn kiểm tra có bao nhiêu tên
VD:

ls -l ~/Desktop/Linux

và tôi thu được :

drwxrwxrwx 2 tuyetkiem tuyetkiem 5028940 2009-03-25 18:10 ~/Desktop/Linux

Số 2 đứng trước “tuyetkiem” chính là số hard link của thư mục Linux
Lệnh ls với tham số -i cho chúng ta biết chỉ số inode của 1 file.
VD:

ls -i ~/Desktop/Linux

Và tôi thu được :

171017 /home/tuyetkiem/Desktop/Linux

Chỉ số inode của thư mục Linux ở đây là 171017
Hãy chọn 1 file có dung lượng lớn 1, 2 GB để thấy rõ sự không thay đổi dung lượng ổ đĩa trước và sau khi tạo 1 hard link
Lệnh ln sẽ tạo ra 1 tên file mới, ở một vị trí mới
VD :

ln ~/file1 ~/Desktop/file2

Trong ví dụ trên nếu file1 không có hard link nào nữa thì ta có 2 liên kết đến chỉ số inode của file1.
Có thể xóa 1 hard link mà không ảnh hưởng gì đến hard link khác. File chỉ bị xóa khi mọi hard link dẫn đến chỉ số inode bị xóa. Thực ra tôi không chắc về điều này. Chỉ biết rằng nếu mọi hard link bị xóa thì tôi sẽ không biết làm cách nào để truy cập vào file đó nếu nó vẫn còn trên hệ thống
3. Liên kết mềm (Symlink)
Thay vì tạo ra một đường dẫn đến chỉ số inode của 1 file chúng ta có thể tạo ra 1 liên kết mềm. Khái niệm symlink cũng tương tự như khái niệm shortcut bên Windows. Một symlink là 1 file thực sự, nhưng trỏ đến hard link gốc đã tạo ra nó.
Xóa một symlink không ảnh hưởng đến hard link gốc. Thay đổi nội dung symlink sẽ làm thay đổi hardlink gốc hay thay đổi file. Nhưng xóa hardlink gốc thì symlink sẽ không còn giá trị
Lệnh ln với tham số -s sẽ tạo ra 1 symlink
VD :

ln -s ~/a ~/Desktop/b

Câu lệnh trên tạo ra một symlink của file a, tên symlink này là b, đặt ở desktop.

Vài lưu ý :
-Thay đổi nội dung 1 file không làm thay đổi chỉ số inode của file đó
-Trong ví dụ trên : b tất nhiên là hard link của 1 file thực sự. Do đó có thể tạo ra các hard link cho b. Mọi hard link tạo từ b đều là symlink của a. Chỉ số inode của b rõ ràng khác của a. Như vậy khái niệm hard link và symlink là hết sức tương đối.
– Không thể tạo ra một hard link cho một thư mục. Cũng không tạo ra 1 hard link cho 1 file nằm ở một phân vùng khác. Đối với symlink thì có thể tạo thoải mái
-Trong bài viết đối tượng mà tôi đề cập đến là file. Tuy nhiên tôi lại thường xuyên đưa “thư mục” vào các ví dụ. Thực ra trong hệ thống file linux. “Thư mục” cũng chỉ là một file “bình thường”. “File” này chứa danh sách về các “file khác” và cho phép truy xuất đến các file trong danh sách mà nó chứa. Khác biệt ở đây là hệ thống có phân biệt 1 file “thư mục”

Tài liệu sử dụng: l4u của Phan Vĩnh Thịnh

Nguồn: http://tuyetkiem.wordpress.com

About securityforall

it, smile, share for people,...

Posted on June 24, 2012, in Tài Liệu. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: