Cách quản lý symlink trong Linux

Cách quản lý symlink trong Linux

Symlink (liên kết tượng trưng) là các file liên kết trực tiếp đến những file khác. Trong những hệ thống Linux, symlink đóng vai trò là các shortcut.

Thuật ngữ “symlink” là sự kết hợp của hai từ “symbolic” (tượng trưng) và “link” (liên kết), làm nổi bật tính hữu dụng của các file này với vai trò tham chiếu tượng trưng cho những thứ khác.

Cái gọi là hard link (liên kết cứng) có chức năng như các bản sao của những file mà chúng tham chiếu, chứ không phải là các liên kết theo nghĩa đen. Soft link hay symbolic link (liên kết mềm hay liên kết tượng trưng) chỉ đơn giản là nhắm vào mục tiêu của chúng. Xóa các liên kết này không làm ảnh hưởng gì đối với những file mà chúng trỏ đến và nhiều liên kết tượng trưng cần thiết có thể được tạo ra để thuận tiện trong quá trình sử dụng. Điều này khiến chúng trở thành lựa chọn tuyệt vời để trỏ đến các file trên những hệ thống file và phân vùng giống nhau.

 

Công dụng của symlink

Thay đổi cấu trúc cơ bản của một hệ thống file cho một ứng dụng duy nhất để nó chạy hiệu quả hơn là một việc rất hệ trọng. Thay vào đó, symlink thường được sử dụng để làm cho vấn đề đơn giản hơn và tạo phân cấp file nhân tạo cho các chương trình để tham chiếu, mà không ảnh hưởng đến vị trí của những file gốc.

Sử dụng các liên kết tượng trưng làm cho việc điều tiết những chương trình khác nhau dễ dàng hơn, nhưng nó cũng làm phức tạp việc phân tích hệ thống file.

Các vấn đề với liên kết tượng trưng

Khi các liên kết tượng trưng đang hoạt động đúng cách, chúng giải thích rõ ràng đường dẫn đến một file thực sự tồn tại. Tuy nhiên, liên kết tượng trưng có vấn đề sẽ trỏ đến các file không tồn tại hoặc đã bị xóa. Các liên kết tượng trưng này tạo ra sự nhầm lẫn cho cả người dùng và chương trình phụ thuộc vào độ chính xác của chúng.

Nếu các file được nhắm mục tiêu bởi những liên kết tượng trưng bị hoán đổi, liên kết đó sẽ tiếp tục trỏ vào file mới, bỏ qua toàn bộ nội dung của nó. “Niềm tin mù quáng” này có thể tạo ra việc kết chuỗi liên kết (link chaining) và liên kết tương đối.

Cụ thể, việc kết chuỗi liên kết có thể dẫn đến các liên kết tuần hoàn (các vòng liên kết có độ dài vô hạn), nếu một liên kết tham chiếu đến liên kết thứ hai, rồi lần lượt quay lại liên kết đầu tiên.

Những việc hóc búa như vậy không nhất thiết đều do sự can thiệp của con người. Các tiêu chuẩn lắp đặt thiết bị không tối ưu và những quy trình tự động nhất định có thể góp phần tạo ra thứ được gọi là “dead link” (liên kết chết). Đây chính xác là nơi các kỹ thuật quản lý sẽ phát huy được tác dụng.

Quản lý liên kết tượng trưng

Trong các hệ thống Linux, có rất nhiều tiện ích được tạo sẵn để xử lý những liên kết tượng trưng. Một sự bao gồm mặc định trong coreutils là ln, thuận lợi cho việc tạo ra các liên kết như vậy từ terminal.

Tuy nhiên, để quản lý đầy đủ các liên kết tượng trưng, ​​bạn sẽ cần có khả năng tìm ra và phân tích chúng một cách nhanh chóng. Một tùy chọn dòng lệnh đơn giản đáng xem xét cho mục đích này được đặt tên là Symlinks.

Mặc dù một số bản phân phối Linux (chẳng hạn như Fedora) đi kèm với công cụ này được cài đặt theo mặc định, nhưng những distro khác, chẳng hạn như Ubuntu, thì không. Để cài đặt Symlinks trong Ubuntu, chỉ cần mở một cửa sổ terminal và nhập thông tin sau:

sudo apt install symlinks

Quản lý liên kết tượng trưng

 

Tạo liên kết tượng trưng

Tạo liên kết tượng trưng từ terminal trong Linux thật dễ dàng. Nhập code sau, thay đổi “original-file.txt”thành tên và phần mở rộng file của mục tiêu mà bạn đã chọn, sau đó thay đổi “linkname” thành thành bất cứ điều gì bạn muốn.

ln -s original-file.txt linkname

Tạo liên kết tượng trưng

Tiện ích ln là để tạo liên kết và nó sẽ làm như vậy khi bạn chạy nó. Ký hiệu -s được bao gồm trong lệnh trên làm cho liên kết được tạo ra mang tính tượng trưng.

Các liên kết tượng trưng tương đối cũng có thể được tạo bằng cách thêm một ký hiệu -r vào cùng một lệnh như sau:

ln -rs original-file.txt linkname

Liên kết tương đối vẫn hoạt động bất kể thay đổi nào trong các điểm mount

Liên kết tương đối vẫn hoạt động bất kể thay đổi nào trong các điểm mount.

Tìm liên kết tượng trưng

Tiện ích Symlinks được đề cập ở trên cung cấp cho chúng ta một cách đơn giản để tìm các liên kết tượng trưng trong một thư mục nhất định. Lệnh để tìm liên kết tượng trưng như sau: (Thay đổi “directory-name”thành đường dẫn đầy đủ đến thư mục bạn muốn tìm kiếm).

symlinks -v directory-name

Tìm liên kết tượng trưng

Thêm r vào lệnh này sẽ cho Symlinks kiểm tra đệ quy các file trong thư mục được chỉ định. Lệnh sẽ trông giống như sau:

symlinks -rv directory-name

Thêm r vào lệnh này sẽ cho Symlinks kiểm tra đệ quy các file trong thư mục được chỉ định

Hãy cẩn thận sử dụng đệ quy (Recursion) nếu bạn lo lắng về các vấn đề phát sinh với liên kết tuần hoàn (cyclic link). Liên kết tuần hoàn là các liên kết tự lặp lại. Chúng có thể khiến tiện ích Symlinks bị treo khi nó cố gắng lặp lại vào cấu trúc vô hạn của chúng.

Phiên bản không đệ quy của lệnh được hiển thị ở trên sẽ chỉ đơn giản tiết lộ bất kỳ liên kết tuần hoàn hiện nào có thể bị “treo”, hay nói cách khác là bị hỏng. Công cụ Symlinks có khả năng sửa các liên kết bị hỏng như vậy.

Sửa các liên kết tượng trưng

Việc sửa các liên kết tượng trưng trong một thư mục đã cho tương đối đơn giản với Symlinks. Đây là lệnh cần sử dụng:

symlinks -cds directory-name

Sửa các liên kết tượng trưng

Lệnh trên thực hiện nhiều việc cùng một lúc. Nó chuyển đổi bất kỳ liên kết tuyệt đối nào mà nó tìm thấy thành các liên kết tương đối, loại bỏ những liên kết treo và rút ngắn các liên kết dài (các liên kết với rất nhiều “../” trong đường dẫn).

Nếu không chắc chắn về kết quả tiềm năng của việc chạy lệnh này, bạn có thể kiểm tra xem một mình -t sẽ làm được gì, mà không thay đổi bất cứ chi tiết nào bằng cách chạy lệnh sau:

symlinks -t directory-name

Chạy lệnh với một mình -t

Hy vọng rằng, bây giờ bạn đã hiểu rõ hơn các liên kết tượng trưng là gì và làm thế nào bạn có thể quản lý chúng một cách hiệu quả. Kiểm tra phần còn lại của tiện ích Symlinks để thực hiện các hoạt động cụ thể hơn trên hệ thống file của bạn bằng cách truy cập liên kết sau:

http://manpages.ubuntu.com/manpages/trusty/man1/symlinks.1.html

Chúc bạn thực hiện thành công!