Thêm HardLink trong SoftLink (symlink trên Linux) có được hay không?

0
154
Việc dùng liên kết tượng trưng mang lại rất nhiều lợi ích cho chúng ta, bạn có thể lưu trữ dữ liệu một cách rất linh hoạt và dễ dàng. Windows cũng hỗ trợ tính năng này và dĩ nhiên nó không còn xa lạ với hầu hết người dùng. Một liên kết tượng trưng hay sử dụng mà các bạn có thể nhận thấy kiểu như:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Dòng lệnh ở trên có nghĩ là sẽ có một liên kết tượng trưng cho tập tin example.com trên thư mục /etc/nginx/sites-enabled/. Tập tin gốc example.com nằm trên thư mục /etc/nginx/sites-available/. Nếu bạn làm gì trên tập tin này trên cả 2 thư mục là /etc/nginx/sites-available//etc/nginx/sites-enabled/ thì đều ảnh hưởng đến tệp tin gốc. Và nếu bạn xóa liên kết tượng trưng với dòng lệnh:
sudo rm /etc/nginx/sites-enabled/example.com
Thì tập tin gốc vẫn còn và nó vẫn nằm trên thư mục gốc /etc/nginx/sites-available/. Nãy giờ là mình đang nói đến SoftLink, liên kết tượng trưng thuộc loại liên kết mềm. Vấn đề ngày hôm nay, đó là mình cấu hình một Site Video. Và nó sử dụng mã nguồn YouPHPTube. Và có một tập tin thiết lập cấu hình trang web đó là:
/home/vngeekvideo/public_html/videos/configuration.php
Và dĩ nhiên, các tập tin đa phương tiện nó cũng nằm trong thư mục này luôn:
/home/vngeekvideo/public_html/videos/
Dĩ nhiên là trước đó thì mình đã cấu hình liên kết tượng trưng để lưu trữ các tập tin video thực tế trên thư mục /vngeekdata/videos:

ln -s /vngeekdata/videos/ /home/vngeekvideo/public_html/
Sẽ không có vấn đề gì nếu như trong tập tin cấu hình configuration.php có thiết lập thế này:
 $subDir = str_replace(array($_SERVER["DOCUMENT_ROOT"], 'videos/configuration.php'), array('',''), $file);
Mà lại dựa trên tập tin gốc nằm ở đâu, sẽ get thư mục và trích xuất ra đường dẫn y vậy nên phá vỡ cấu trúc Permalink của site. Bởi lẽ ra nó phải nằm ở thư mục /home/vngeekvideo/public_html/videos thì nay nó nằm ở thư mục /vngeekdata/videos mặc dù đã được cấu hình nằm trong thư mục được symlink trước đó. Và thế là mình thử dùng Hard link để hệ thống nhận diện lại tập tin configuration.php, trước đó mình có xóa tập tin configuration.php nằm ở thư mục /vngeekdata/videos và chuyển nó sang thư mục gốc /home/vngeekvideo/public_html/ để cấu hình Hard Link như bên dưới:
ln /home/vngeekvideo/public_html/configuration.php /home/vngeekvideo/public_html/videos/configuration.php
Và có lỗi xảy ra:
ln: failed to create hard link '/home/vngeekvideo/public_html/videos/configuration.php' => '/home/vngeekvideo/public_html/configuration.php': Invalid cross-device link
root@server1:/home/vngeekvideo/public_html#
Như vậy, tạo một Hard Link nằm trong một Soft Link là không thực hiện được. Các bạn cũng hiểu vì sao rồi chứ? Kiểu như đặt một vật thể có thật vào trong ngôi nhà ảo, điều đó không thể xảy ra. Trừ khi đặt một vật thể có thực trong không gian thực, và không gian thực đó không bị chi phối bởi những gì có thể là ảo. :))
Đường dẫn rút gọn của bài viết: https://vngeek.com/MwCWV

BÌNH LUẬN

Please enter your comment!
Please enter your name here