Làm cách nào để truy cập ổ đĩa gắn trên mạng trên Hệ thống con Windows Linux?


62

Tôi có một ổ đĩa samba được gắn trên máy tính windows cục bộ của tôi.

Tôi có ổ đĩa "/ mnt / c" trong WLS ("Windows 10 bash"), nhưng không có "/ mnt / z".

Có cách nào để truy cập nó bằng cách nào đó? Tôi có thể kể lại nó trong WLS không?


3
Có cuộc thảo luận về tính năng này tại Phản hồi dành cho nhà phát triển của Microsoft wpdev.uservoice.com/forums/ trộm
Nelson

Câu trả lời:


23

[Cập nhật - rõ ràng tính năng này có sẵn trong bản dựng 16176 . Tôi chưa thử nó.]

Không, mặc dù có thể có một số mẹo tôi chưa khám phá ra. Hệ thống con Windows cho Linux không gắn ổ đĩa mạng. Một nhân viên của Microsoft nói ở đây (trong một bình luận):

Chúng tôi chỉ có các ổ đĩa cố định gắn vào thời điểm này. Ổ đĩa USB / di động / mạng không được xử lý tại thời điểm này. Khả năng này là tồn đọng của chúng tôi, nhưng nó không có trên thẻ bất cứ lúc nào sớm.

Vì vậy, đừng nín thở.

Tôi đã cố gắng làm việc xung quanh nó bằng cách sử dụng một liên kết tượng trưng, ​​như thế này:

c:> mklink /d c:\some\directory \\some_server\some_share

Liên kết chỉ hoạt động tốt trong Windows "bình thường" (cmd.exe, PowerShell, trình duyệt tệp, v.v.), nhưng vô hình với WSL:

$ ls -ld /mnt/c/some/directory
/mnt/c/some/directory not found

Đối với sử dụng của riêng tôi, giới hạn này là một điểm dừng hiển thị. Tôi có những thứ trên các ổ đĩa mạng mà tôi không sẵn sàng di chuyển. Có những lựa chọn thay thế; Tôi đang sử dụng Cygwin.


Đồng ý, đây cũng là một showstopper cho tôi - Tôi chỉ cài đặt msys2 cho việc này.
Ela782


thứ tự các đối số của bạn đối với mklink là sai - không nên như linkname targetvậytarget linkname
masterxilo

Vâng, masterxilo, bạn đã đúng - Tôi đã sai lệnh mklink ở đây. Đã sửa. Khi tôi thực sự dùng thử, tôi đã làm đúng và nó không hoạt động với WSL. Bây giờ là một điểm cần thiết, vì WSL hiện có thể gắn kết chia sẻ mạng. Nhưng cảm ơn đã sửa chữa. Ngay cả khi hầu như không ai nhìn vào câu trả lời này, tôi ghét để lại một sai lầm như thế.
Joseph Thvedt

109

từ liên kết bleater được đăng

Gắn DrvF

Để gắn ổ đĩa Windows bằng DrvF, bạn có thể sử dụng lệnh mount Linux thông thường. Ví dụ: để gắn một ổ đĩa di động D: as / mnt / d, hãy chạy các lệnh sau:

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

Bây giờ, bạn sẽ có thể truy cập các tệp của ổ D: của bạn dưới / mnt / d. Khi bạn muốn ngắt kết nối ổ đĩa, ví dụ để bạn có thể gỡ bỏ nó một cách an toàn, hãy chạy lệnh sau:

$ sudo umount /mnt/d

Gắn kết các vị trí mạng

Khi bạn muốn gắn một vị trí mạng, tất nhiên bạn có thể tạo một ổ đĩa mạng được ánh xạ trong Windows và gắn kết như được chỉ ra ở trên. Tuy nhiên, cũng có thể gắn kết chúng trực tiếp bằng đường dẫn UNC:

$ sudo mkdir /mnt/share
$ sudo mount -t drvfs '\\server\share' /mnt/share

Lưu ý các trích dẫn duy nhất xung quanh đường dẫn UNC; những điều này là cần thiết để ngăn chặn sự cần thiết phải thoát khỏi dấu gạch chéo ngược. Nếu bạn không bao quanh đường dẫn UNC bằng các dấu ngoặc đơn, bạn cần thoát khỏi dấu gạch chéo ngược bằng cách nhân đôi chúng (ví dụ \\\\server\\share).

WSL không có cách nào để chỉ định thông tin đăng nhập nào sẽ được sử dụng để kết nối với chia sẻ mạng. Nếu bạn cần sử dụng các thông tin đăng nhập khác nhau để kết nối với máy chủ, hãy chỉ định chúng trong Windows bằng cách điều hướng đến chia sẻ trong File Explorer, sử dụng Trình quản lý thông tin Windows hoặc lệnh sử dụng mạng. Lệnh net use có thể được gọi từ bên trong WSL (sử dụng net.exe) thông qua interop. Nhập net.exe giúp sử dụng để biết thêm thông tin về cách sử dụng lệnh này.


2
hoàn toàn làm việc cho "bash for windows 10" của tôi! Cảm ơn bạn rất nhiều!
Ying Zhang

6
Câu trả lời đúng nên được thay đổi thành câu hỏi này vì nó trực tiếp trả lời câu hỏi.
Tomek

Bạn cần "Windows Insider build" để nhận DrvF. -1 (không thực sự bỏ phiếu)
FractalSpace

5
Tôi không có cửa sổ nội bộ xây dựng và nó hoạt động với tôi
gman

2
Điều này gắn kết chia sẻ, nhưng mọi thứ đều thuộc sở hữu của root và một số tệp không thể đọc được (ngay cả với sudo và ngay cả khi các quyền trong WSL là 777). Tôi có thể đọc các tập tin từ windows file explorer. Thêm bất kỳ tùy chọn gắn kết nào ( -o) sẽ cho tôi lỗi "loại fs sai, tùy chọn xấu, siêu khối xấu".
Jay K

2

xem https://github.com/Microsoft/WSL/issues/2999#issuecomment-455835951

Đây là một cách để gắn kết GFS trong WSL dựa trên việc Bắt `sshfs` hoạt động trên WSL hoặc tìm một giải pháp thay thế Bí quyết là sử dụng https://www.nsoftware.com/sftp/netdrive/ để ssh sang GFS từ Windows và chuyển đổi nó đến một hệ thống tập tin có thể được gắn kết theo WSL.

  1. Cài đặt OpenSSH Server trong Cài đặt Win10 Win10 -> Ứng dụng -> Quản lý các tính năng tùy chọn -> Thêm tính năng -> Khởi động lại máy chủ OpenSSH nếu cần mở Dịch vụ -> OpenSSH -> Thuộc tính -> Loại khởi động -> Tự động (bị trì hoãn)

  2. Cài đặt và chạy SFTPNetDrive, nhấp chuột phải vào biểu tượng trong các biểu tượng ẩn -> Cửa sổ chính (hoặc có thể đã mở) -> Hồ sơ -> hồ sơ mới (máy chủ: localhost, người dùng: * pwd: * Drive Letter: F (hoặc khác) Nâng cao - > (Giao thức -> bỏ chọn nén; Thư mục được chỉ định: G: \))

  3. trong Bash (wsl): sudo mkdir / mnt / f; sudo gắn -t drvfs F: / mnt / f

Tôi không chắc nó ổn định đến mức nào, nhưng tôi đã có thể mở các tệp trong WSL.


-2

Có (ít nhất) hai cách để sử dụng Bash trong Windows:

  1. Bash đi kèm với WLS (khi cài đặt Linux trên Windows 10 từ Windows Store hoặc các nguồn khác)
  2. Git-Bash trên Windows

Git-Bash có quyền truy cập vào các thư mục mạng (cài đặt git-bash> vào thư mục mạng> nhấp chuột phải> "Git Bash Here"> chạy pwdđể xem đường dẫn).

Nếu bạn phải sử dụng phiên bản bash của WLS, thì bạn có thể gọi Git-Bash từ bash của WLS như sau:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
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.