Symlink từ máy trạm này đến máy trạm khác mà không cần gắn kết


8

Tôi đang cố gắng tạo một liên kết tượng trưng của một tệp trên một máy trạm linux đến một máy trạm linux khác, mà không phải 'gắn kết' bất kỳ chia sẻ mạng nào. Đây là những gì tôi đang cố gắng làm, nhưng không thể làm cho nó hoạt động.

ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov

1
Bạn cần -stạo một liên kết tượng trưng; mặt khác, bạn đang cố gắng tạo một liên kết cứng và chúng chỉ có thể được tạo trên cùng một hệ thống tập tin.
deltab

Xin lỗi, đã bỏ lỡ các -s. Bây giờ tôi đã thêm nó.
speedyrazor

Khi bạn nói "không thể làm cho nó hoạt động", điều gì thực sự xảy ra khi bạn thử? Ngoài ra, những gì bạn đang sử dụng sẽ làm cho //10.0.1.103tham chiếu đến một máy khác, và không chỉ là một thư mục con /được gọi là 10.0.1.103?
deltab

Tôi đã cập nhật câu hỏi để chỉ ra rằng trên //10.0.1.103 (máy trạm linux khác trên cùng một mạng) có một thư mục dùng chung (sharedFolder). Vì vậy, thay vì gắn thư mục dùng chung đó, tôi có thể liên kết thẳng tới nó, giống như bạn có thể trên PC Windows không?
speedyrazor

Nếu bạn chưa gắn kết bất kỳ chia sẻ mạng nào thì cho biết symlink sẽ là con trỏ "lơ lửng". Tại sao bạn muốn làm điều này?
SHW

Câu trả lời:


14

Bạn không thể:

Một symlink chỉ đơn giản là một inode bổ sung (một cấu trúc trỏ đến tệp) và inode này bao gồm, trong số những thứ khác, a deviceIdvà an inode pointer. Hiệu deviceIdquả trỏ đến một tập tin đặc biệt của thiết bị trong /devthư mục và inode pointertrỏ đến một khối trên thiết bị đó.

Vị trí mạng của 10.0.1.103bạn không và không thể có deviceId(nó không ở /dev) do đó bạn không thể có liên kết tượng trưng đến vị trí mạng.

Mặt khác, chia sẻ mạng được gắn kết sẽ có deviceIdlý do tại sao bạn có thể tạo liên kết tượng trưng đến vị trí được gắn kết.


1
Không phải câu trả lời tôi muốn, nhưng trung thực và rõ ràng, chúc mừng.
speedyrazor

1
Đó không phải là cách symlink hoạt động.
Michael Homer

@MichaelHomer +1 Để được giải thích chính xác về các liên kết tượng trưng, ​​hãy xem stackoverflow.com/questions/16912997
stek29

7

Windows có một cú pháp đặc biệt có nghĩa là tệp nằm trên máy được gọi qua giao thức SMB . Điều này được tích hợp vào hệ điều hành và chuyên biệt cho một giao thức mạng.\\MACHINE\DIRECTORY…\FILE\DIRECTORY…\FILE\\MACHINE

Linux có một hệ thống tập tin linh hoạt dựa trên khái niệm gắn kết . Các hệ thống tập tin được gắn vào một thư mục hiện có và quản trị viên sẽ chọn cách sắp xếp hệ thống phân cấp thư mục. Để biết thêm thông tin, hãy đọc Ý nghĩa của việc gắn thiết bị trong Linux là gì? , Tại sao hệ thống tập tin của Linux được thiết kế dưới dạng cây thư mục? Điểm gắn kết nào tồn tại trên một hệ thống Linux điển hình? . Linux hỗ trợ nhiều hệ thống tệp mạng (tức là hệ thống tệp cho phép một máy truy cập tệp trên máy khác), bao gồm NFS , SMB, SSHFS , v.v.

NFS có thể được coi là hệ thống tệp mạng gốc của Linux, cách SMB là của Windows. Tuy nhiên, Linux không xuất các tệp của nó theo mặc định: bạn cần cài đặt máy chủ NFS. Một máy chủ NFS có sẵn trong tất cả các bản phân phối Linux, nhưng yêu cầu một chút thiết lập (bạn cần phải đăng ký các thư mục bạn muốn xuất trong tệp /etc/exports). Hơn nữa, NFS xuất phát từ thời điểm nhẹ nhàng hơn khi những kẻ tấn công trên mạng cục bộ không phải là mối quan tâm và việc bảo mật nó đòi hỏi một chút kiến ​​thức về tường lửa nằm ngoài phạm vi của câu trả lời này. Để làm cho thư /some/wheremục từ máy từ xa foo.example.comcó sẵn tại vị trí /local/dir(phải là thư mục hiện có), giả sử rằng nó được xuất bởi máy từ xa, hãy chạy lệnh sau dưới dạng root:

mount foo.example.com:/some/where /local/dir

Cách dễ dàng để truy cập các tệp từ xa mà không cần thiết lập là qua SSHFS. Tất cả những gì bạn cần là cài đặt máy chủ SSH trên máy từ xa và sshfsgói trên máy cục bộ. Bạn cũng nên tạo một khóa (xem Cách thực hiện công việc đăng nhập không cần mật khẩu ), mặc dù bạn không phải làm điều đó nếu bạn không ngại nhập mật khẩu của mình mỗi lần. SSH cũng rất hữu ích để chạy các lệnh trên máy từ xa. Để làm cho thư /some/wheremục từ máy từ xa foo.example.comkhả dụng tại vị trí /local/dir(phải là thư mục hiện có) qua SSHFS, hãy chạy lệnh sau (như người dùng thông thường của bạn):

sshfs foo.example.com:/some/where /local/dir

Linux có thể là máy chủ hoặc máy khách cho giao thức SMB (giao tiếp với các máy Windows hoặc thậm chí với các máy Linux khác mặc dù nó được tích hợp kém hơn các giao thức khác) thông qua phần mềm Samba .

Bạn có thể thiết lập một bộ đếm tự động (chẳng hạn như autofs) để việc truy cập một số thư mục tự động gắn kết các thư mục từ một số máy từ xa. Ví dụ, một xếp thứ cấu hình phổ biến mà các autofs hệ thống tập tin được gắn trên các thư mục /net, và truy cập làm cho thư mục ở xa từ được gắn kết thông qua NFS tại địa điểm đó (và nó sẽ được gỡ bỏ sau một thời gian nhất định không hoạt động). Máy từ xa tất nhiên phải có máy chủ NFS được thiết lập và cho phép kết nối đó./net/MACHINE/DIRECTORY/DIRECTORY/net/MACHINE

Có thể thiết lập một công cụ tự động với SSHFS. Xem SSHFS hoàn toàn liền mạch trong Linux bằng cách sử dụng Fuse và AutofsAutofs và sshfs - cặp đôi hoàn hảo để được hướng dẫn nhanh; một cách ngắn gọn:

  1. Cài đặt autofssshfs.
  2. Thêm dòng sau vào /etc/auto.master:

    /mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
    

    Thay thế hai lần xuất hiện 1000 bằng id người dùng và id nhóm của bạn (chạy id -uid -gđể hiển thị các giá trị này). Tạo thư mục /mnt/sshfs.

  3. Tạo một tệp /etc/auto.sshfschứa các dòng như sau:

    machinename -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#machinename.example.com\:
    

    nơi machinename.example.comlà tên máy chủ (hoặc địa chỉ IP) của máy từ xa và machinenamelà tên mà bạn muốn truy cập nó như tại địa phương, thông qua con đường /mnt/sshfs/machinename.

Autosshfs cung cấp một thiết lập tự động + sshfs thuận tiện hơn.

Cuối cùng, liên quan đến phần biểu tượng: bạn có thể tạo một liên kết tượng trưng đến một con đường không tồn tại. Liên kết tượng trưng là đối số thứ hai, vì vậy bạn sẽ cần một cái gì đó như

ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov

Bạn sẽ cần phải bằng tay hoặc tự động sắp xếp /sharedFoldertừ 10.0.1.103được gắn ở /net/10.0.1.103/sharedFolder.


0

Cho những gì nó có giá trị ...

Tôi đã làm việc trên một công cụ nhỏ gọi là Lionfs dựa trên GhostFS của Raphael S. Carvalho . Mục tiêu là cho phép các liên kết tượng trưng chỉ đến một URI . Nó khá chưa hoàn chỉnh, có rất nhiều vấn đề và hiện chỉ hỗ trợ HTTP. FUSE (Filesystem in Userspace) được sử dụng để xử lý nền.


1
Xin hãy nói cụ thể hơn về những gì nó làm và cách nó giúp OP, lúc đầu tôi nghĩ nó có thể tự động gắn kết nhưng rõ ràng đây không phải là trường hợp, nó chỉ để cung cấp nội dung được cung cấp HTTP dưới dạng FS?! Điều này dường như không phải là những gì OP muốn.
phk
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.