Trường hợp sử dụng thực tế điển hình hoặc ứng dụng của các liên kết tượng trưng / cứng trong Linux là gì?


7

Tôi hiểu khái niệm liên kết trong Linux, cứng hay mềm.

Ai đó có thể vui lòng cho tôi biết trường hợp sử dụng thực sự?

Tại sao chúng ta cần giữ nhiều tài liệu tham khảo cho cùng một tệp? Không phải quản lý của họ là một vấn đề?

Nếu ai đó nhầm lẫn sao chép một tài liệu tham khảo thay vì tạo một tài liệu tham khảo mới của bản gốc, tôi nghĩ rằng nó có thể là một mớ hỗn độn với khía cạnh quản lý.


1
Để giải quyết câu lệnh cuối cùng của bạn, việc quản lý nhiều phiên bản của cùng một tệp sẽ khó hơn rất nhiều so với việc quản lý một tệp / thư mục có nhiều tham chiếu đến nó.
Shawn Chin

mục đích của việc chuyển câu hỏi này từ stackoverflow sang superuser là gì? tôi không biết gì về nhóm này
PK

@Praveen Đây là cách sử dụng máy tính SE - việc sử dụng máy tính không thuộc đối tượng mục tiêu của SO.
new123456

Câu trả lời:


9

Bất cứ lúc nào bạn muốn nhiều tên cho cùng một thứ, bạn cần một liên kết.

Các thư viện dùng chung trong Linux được đặt tên bằng tên thật của chúng, như trong ví dụ này:

lrwxrwxrwx. 1 root root     16 Dec  2 15:24 /usr/lib64/libcurl.so -> libcurl.so.4.2.0
lrwxrwxrwx. 1 root root     16 Dec  2 15:04 /usr/lib64/libcurl.so.4 -> libcurl.so.4.2.0
-rwxr-xr-x. 1 root root 380864 Sep 19 07:04 /usr/lib64/libcurl.so.4.2.0

Điều này là để các chương trình muốn bất kỳ phiên bản libcurl mở libcurl.so. Nếu họ muốn phiên bản 4, họ mở libcurl.so.4. Nếu họ cần phiên bản 4.2.0 rất cụ thể, họ có thể mở libcurl.so.4.2.0.

Điều này cũng được sử dụng cho các chương trình như /usr/bin/java. Java có thể được cung cấp bởi nhiều nguồn khác nhau. Nó có thể là IcedTea OpenJDK. Nó có thể là Sun JRE. Hoặc nó có thể là phiên bản IBM. Sử dụng một liên kết tượng trưng cho phép hệ thống trỏ đến một phiên bản mặc định, trong khi giữ mỗi phiên bản trong thư mục riêng của nó.


Trường hợp sử dụng tuyệt vời. Làm cho phiên bản kiểm soát các tập tin nhị phân một snap.
Evan Plaice

5

Để đơn giản hóa các bản sao lưu

Trường hợp sử dụng 1: Di chuyển tài liệu sang phân vùng cục bộ hoặc NFS riêng

Hãy nói rằng bạn muốn cập nhật Hệ điều hành của mình với mỗi bản phát hành mới. Một cách tiếp cận sao lưu thông thường sẽ là sao chép thư mục nhà của bạn vào một phân vùng riêng để bạn có thể sao chép lại nội dung sau khi cài đặt.

Những gì tôi thường làm là symlink các thư mục tôi muốn sao lưu vào phân vùng riêng. Để khôi phục các liên kết tượng trưng, ​​tôi chỉ cần chạy một tập lệnh bash nhanh để khôi phục các liên kết sau khi cài đặt hệ điều hành.

Tôi sẽ chỉ gọi nó là sao lưu dữ liệu của bạn nhưng thực sự không có bước 'sao lưu' bổ sung. Phần thú vị là nếu bạn vô tình kéo một động thái noob như 'rm -rf' hệ thống tập tin của bạn, rm không tuân theo các liên kết tượng trưng để bạn sẽ không bị mất tập tin của mình.

Lưu ý: Tôi hiểu rằng bạn có thể thay đổi vị trí của nơi / nhà được gắn kết bằng cách sử dụng / etc / fstab. Lý do tôi không sử dụng kỹ thuật đó là vì tôi chỉ muốn liên kết có chọn lọc các phần trong tệp người dùng của mình và để lại bất kỳ rác tích lũy nào.

Trường hợp sử dụng 2: Sử dụng phân vùng đa nền tảng (cách dễ dàng)

Lợi ích bổ sung cho việc sử dụng symlink (liên kết mềm) là chúng hoạt động trên các hệ thống tập tin khác nhau.

Một số người trong chúng ta không có sự sang trọng (do nhu cầu kinh doanh) khi có thể sử dụng Linux làm hệ điều hành duy nhất của chúng tôi để chúng tôi nhảy trở lại và thứ tư rất nhiều. Để mở rộng Trường hợp 1, những gì cá nhân tôi làm là sử dụng phân vùng NTFS cho các tệp người dùng của tôi và liên kết tượng trưng ra các tệp cấu hình và người dùng khác nhau mà tôi muốn kéo vào Linux. Điều đó giữ tất cả những thứ của tôi ở một nơi.

Lưu ý: Nếu bạn chưa biết, bạn cũng có thể tạo liên kết tượng trưng trong Windows bằng lệnh MKLINK.

Hãy tưởng tượng điều này. Bạn có tài khoản Dropbox mà bạn sử dụng trong cả Linux và Windows. Để tránh phải tải xuống / đồng bộ hóa hai bản sao của cùng một tệp, bạn có thể dễ dàng sử dụng mọi thứ trên cả hai hệ điều hành như liên kết tượng trưng đến thư mục Dropbox trên phân vùng NTFS từ thư mục / home của bạn.

Lưu ý: Để tự động gắn ổ đĩa NTFS (trong các bản phát hành dựa trên Debian, không chắc chắn về các ổ đĩa khác), bạn sẽ phải thêm một điểm gắn kết trong / etc / fstab với umask = 000 cho các đặc quyền ghi.

Trường hợp sử dụng 3: Để hỗ trợ cấu trúc thư mục mặc định và tùy chỉnh đồng thời

Hãy nói rằng bạn là một nhà phát triển web chịu trách nhiệm làm việc trên nhiều trang web.

Bạn đã thiết lập máy chủ thử nghiệm của mình đúng cách trong:

/opt/lampp

Bạn có thể cố gắng tạo một cấu hình lớn hoạt động trên tất cả các trang web nhưng điều đó sẽ trở nên cồng kềnh để duy trì theo thời gian khi các trang web mới được thêm vào. Càng nhiều trang web bạn thêm càng không đồng bộ, các cài đặt quyền sẽ được cung cấp với máy chủ sản xuất.

Điều gì xảy ra khi bạn muốn thả cấu hình máy chủ sản xuất để kiểm tra các lỗ hổng bảo mật hoặc để xác minh rằng không có lỗi kịch bản phía máy chủ nào được hiển thị cho người dùng. Bạn chỉ cần thêm một bộ ngoại lệ cho điều đó? Bạn tự tin đến mức nào khi cấu hình thử nghiệm của bạn giống với cấu hình mà các nhà phát triển khác trong nhóm đang sử dụng.

Apache đặc biệt linh hoạt khi nói đến các cấu hình nhưng với sự linh hoạt đi kèm với sự phức tạp; và sự phức tạp gây ra rủi ro khi bạn viết mã cho web.

May mắn thay, có một cách tiếp cận đơn giản hơn nhiều. Tạo một tập lệnh bash cho mỗi trang web với các đối số --testing và - sản xuất. Sau đó, chỉ cần cấu hình các đối số để thả các liên kết tượng trưng thích hợp vào các thư mục htdocs và config cho cấu hình cụ thể. Trang web có thể được kiểm soát phiên bản, trên một phân vùng riêng hoặc thậm chí trên một chia sẻ từ xa. Nó không quan trọng, miễn là các liên kết tượng trưng đến đúng nơi.

Cập nhật :

Điều này đã được nâng cấp một lần nữa vì vậy tôi quyết định thêm 2 trường hợp sử dụng phổ biến nữa.

Trường hợp sử dụng 4: Làm cho các ứng dụng có thể truy cập dễ dàng thông qua dòng lệnh

Hãy nói rằng bạn cài đặt một ứng dụng mới như Sublime Text thành "/ opt / Sublime Text" để cấp quyền truy cập ở cấp độ người dùng mà không yêu cầu quyền root.

Để làm cho nó dễ dàng truy cập thông qua dòng lệnh, một cách tiếp cận phổ biến là sửa đổi biến $ PATH để bao gồm thư mục ứng dụng Sublime. Cách tiếp cận này có thể ít hơn lý tưởng vì $ PATH có độ dài hạn chế, có xu hướng bị ô nhiễm với rất nhiều liên kết đến đường dẫn thư viện dùng chung và khó xóa hơn sau này.

Vì / usr / bin (tức là một trong những thư mục ứng dụng chính) đã được bao gồm trong $ PATH, tại sao không cõng trên đó?

Cách tiếp cận đơn giản nhất là tạo symlink / usr / bin / trỏ đến tệp thực thi Sublime Text.

sudo ln -s "/opt/Sublime Text/sublime" /usr/bin/sublime

Bây giờ khởi chạy trình soạn thảo văn bản Sublime từ dòng lệnh đơn giản như gõ sublimevào thiết bị đầu cuối. Sudo chỉ được yêu cầu khi bạn tạo / xóa symlink vì / usr / bin có các đặc quyền thực thi ở cấp độ người dùng theo mặc định.

Trường hợp sử dụng 5: Sao lưu liền mạch và đồng bộ hóa chọn lọc lên đám mây

Trong đám đông CNTT, một trong những lời khuyên phổ biến nhất là 'sao lưu các tệp của bạn'. Nhưng sao lưu là '2000 và muộn'.

Mặc dù có rất nhiều dịch vụ đồng bộ hóa tệp có sẵn nhưng chúng không linh hoạt khi tổ chức các tệp. Thông thường, họ yêu cầu thư mục riêng của họ được đặt trong thư mục người dùng và không phải tất cả hỗ trợ đồng bộ chọn lọc. Điều đó ổn vì liên kết giải quyết cả hai vấn đề.

Trong trường hợp vị trí thư mục, ai quan tâm. Trừ khi bạn muốn đồng bộ hóa toàn bộ nội dung thư mục nhà của mình (nghĩa là tôi thích chọn lọc hơn về các bản sao lưu) đó là một nơi tốt cho nó.

Như 'những gì' bạn đồng bộ hóa. Điều đó phụ thuộc vào sở thích của bạn. Cá nhân, tôi thích giữ những thứ như tiết kiệm trò chơi, dự án phát triển phần mềm, tài liệu, phần mềm di động và cấu hình được đồng bộ hóa với đám mây trong khi đồng bộ hóa ảnh với một dịch vụ khác phù hợp hơn với hình ảnh.

Gần đây tôi đã có máy tính để bàn chính của mình (tức là iMac) bị lỗi ổ cứng bên trong sau 6 năm sử dụng với 0 mất dữ liệu. Chắc chắn, tôi đã phải cài đặt lại hệ điều hành, ứng dụng và liên kết lại mọi thứ nhưng cảm thấy rất tốt khi có một khởi đầu mới và tôi đã có thể viết kịch bản nhiều quy trình để làm cho nó dễ thực hiện hơn trong tương lai.


@Praveen Không có vấn đề. Tôi cũng có một chút bí ẩn bởi khả năng ứng dụng trong thế giới thực của các liên kết tượng trưng. Bây giờ, tôi không thể thấy mình làm việc mà không có họ. Đối với tôi, việc hiểu các liên kết tượng trưng khiến tôi nhận thức rõ hơn về những gì trừu tượng hệ thống phân cấp hệ thống tập tin thực sự đại diện.
Evan Plaice 2/212

3

Liên kết cung cấp lớp chuyển hướng cho một tên tệp và nội dung của nó. Xem xét tình huống này được minh họa bởi Michael Jakl, trong một bài viết liên quan đến việc sử dụng rsync để bắt chước hành vi của tính năng Time Machine của Apple.

Liên kết cứng


2
Câu hỏi phụ: công cụ bạn đã sử dụng để tạo biểu đồ là gì?
Frank

@Frank Tôi không phải là người tạo ra hình ảnh nói trên và tôi có thể là một người xấu vì đã không quy kết rõ ràng cho nguồn của nó từ bài viết được tham chiếu bởi Michael Jakl. Như vậy tôi không biết nó được tạo ra như thế nào, nhưng sẽ hỏi.
David J. Liszewski

2
re: Chương trình vẽ. Tôi đã liên lạc với Michael. Ông nói: "Tôi đã sử dụng OmniGraffle (đáng buồn thay, chỉ có sẵn trên OS X) cho sơ đồ đó. Từ đó tôi đã bắt đầu sử dụng Google Draw cho các sơ đồ đơn giản (trên Linux, các tùy chọn khả dụng ít hơn tối ưu)." - hy vọng rằng sẽ giúp.
David J. Liszewski

3

Các ví dụ trong thế giới thực về việc sử dụng liên kết cứng có thể được tìm thấy trong /bincác thư mục bin khác. Chạy lệnh ls -l /bin | grep -v ' 1 ' | sort. Điều này sẽ cung cấp cho bạn một danh sách các lệnh với nhiều liên kết. Một số lệnh sẽ hành động khác nhau tùy thuộc vào tên bạn gọi chúng. (Busybox là một trường hợp cực đoan.) Liên kết cứng phải nằm trên cùng một thiết bị và không yêu cầu thêm dung lượng đĩa.

Liên kết tượng trưng được sử dụng rất nhiều trong /etc. Nó cho phép các tệp nằm ở những nơi khác trong hệ thống phân cấp được sử dụng mà không bị trùng lặp. Liên kết tượng trưng có thể vượt qua ranh giới thiết bị, nhưng yêu cầu không gian đĩa bổ sung cho con trỏ.


2

Có một số cách sử dụng các liên kết tượng trưng trong Linux, hoặc các hệ thống * nix nói chung. Ví dụ: khi bạn muốn di chuyển vị trí tệp vật lý mà không phá vỡ các tham chiếu "nổi tiếng" hiện có hoặc phổ biến, bạn có thể muốn tạo một liên kết tượng trưng tại vị trí cũ. Điều này hữu ích khi bạn cố gắng nâng cấp một công cụ thường được sử dụng với phiên bản riêng, vì bất kỳ lý do gì. Một số tiện ích, chẳng hạn như busybox, sử dụng nhị phân chung để phục vụ một số nhu cầu. Trong một số bản phân phối Linux nhất định, chẳng hạn như OpenWRT, / bin / bash, / bin / ls, / bin / mv, v.v. đều là các liên kết đến / bin / busybox. Nhị phân này có khả năng hành xử khác nhau dựa trên việc argv[0]sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.