Як отримати доступ до мережевого накопичувача в підсистемі Windows Linux?


62

У мене є накопичувач samba, який встановлений на моєму локальному комп'ютері Windows.

У мене в WLS ("Windows 10 bash") диск "/ mnt / c", але немає "/ mnt / z".

Чи є спосіб якось отримати доступ до нього? Чи можу я переустановити його в WLS?


3
Про цю функцію обговорюються в Microsoft Feedback для розробників wpdev.uservoice.com/forums/…
Нельсон,

Відповіді:


23

[Оновлення - очевидно, ця функція доступна у збірці 16176 . Я ще цього не пробував.]

Ні, хоча може бути якийсь трюк, якого я не виявив. Підсистема Windows для Linux не монтує мережеві накопичувачі. Співробітник Microsoft каже тут (у коментарі):

На даний момент ми лише «монтуємо» фіксовані диски. Наразі USB / знімні / мережеві накопичувачі не обробляються. Ця можливість є нашим відставанням, але це не скоро на картках.

Тому не затримуйте дихання.

Я спробував обійти це за допомогою символічного посилання, як-от так:

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

Посилання працює чудово у "звичайній" Windows (cmd.exe, PowerShell, провідник файлів тощо), але WSL невидиме:

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

Для мого власного використання це обмеження є пробкою. У мережевих накопичувачах є речі, які я не бажаю рухатись. Є альтернативи; Я використовую Cygwin.


Домовились, це теж шоустоппер для мене - я щойно для цього встановив msys2.
Ela782


порядок ваших аргументів до mklink неправильний - це має бути linkname target, ніtarget linkname
masterxilo

Так, мастерсіло, ти маєш рацію - тут у мене неправильна команда mklink. Виправлено. Коли я насправді спробував це, я зробив це правильно, і він не працював у відношенні WSL. Зараз це суперечливий момент, оскільки WSL тепер може монтувати мережеві спільні доступу. Але дякую за виправлення. Навіть якщо майже ніхто не дивиться на цю відповідь, я ненавиджу залишати подібну помилку.
Джозеф Тведт

109

зі посилання bleater розміщено

Монтаж DrvFs

Для того, щоб змонтувати накопичувач Windows за допомогою DrvFs, ви можете використовувати звичайну команду монтування Linux. Наприклад, щоб встановити знімний диск D: as / mnt / d, виконайте такі команди:

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

Тепер ви зможете отримати доступ до файлів диска D: під / mnt / d. Якщо ви бажаєте відключити накопичувач, наприклад, щоб ви могли безпечно його вийняти, виконайте таку команду:

$ sudo umount /mnt/d

Монтаж локальних локацій

Коли ви хочете встановити мережеве розташування, ви, звичайно, можете створити відображений мережевий накопичувач у Windows та змонтувати його, як зазначено вище. Однак також можна встановити їх безпосередньо за допомогою шляху UNC:

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

Зверніть увагу на єдині лапки навколо шляху UNC; вони необхідні для запобігання необхідності уникнути відкосів. Якщо ви не оточуєте шлях UNC одинарними лапками, вам слід уникнути зворотних нахилів, подвоївши їх (наприклад \\\\server\\share).

WSL не має жодного способу вказати, які облікові дані використовувати для підключення до загальної мережі. Якщо вам потрібно використовувати різні облікові дані для підключення до сервера, вкажіть їх у Windows, перейшовши на спільну частину файлового провідника за допомогою диспетчера облікових даних Windows або команди net use. Команду net use можна викликати всередині WSL (використовуючи net.exe) через interop. Введіть довідку net.exe для отримання додаткової інформації про використання цієї команди.


2
повністю працював на мій "баш для windows 10"! Дуже дякую!
Ін Чжан

6
Правильну відповідь слід змінити на цю, оскільки вона безпосередньо відповідає на питання.
Томек

Для отримання DrvFs вам потрібна "Windows Insider build". -1 (насправді не проголосував)
FractalSpace

5
У мене немає інсайдерської збірки Windows, і це працює на мене
gman

2
Це вміщує загальну частку, але все належить root, а деякі файли не читаються (навіть із судо, і навіть якщо дозволи всередині WSL є 777). Я можу прочитати файли з Windows File Explorer. Додавання будь-яких параметрів кріплення ( -o) дає мені помилку "неправильний тип fs, поганий варіант, поганий суперблок".
Джей К

2

дивіться https://github.com/Microsoft/WSL/isissue/2999#issuecomment-455835951

Ось спосіб встановити GFS у WSL на основі отримання `sshfs` роботи над WSL або пошуку альтернативи . Трюк полягає у використанні https://www.nsoftware.com/sftp/netdrive/ для ssh до GFS з Windows та перетворення його до файлової системи, яку можна встановити під WSL.

  1. Встановіть сервер OpenSSH у налаштуваннях Win10 Win10 -> Програми -> Управління додатковими функціями -> Додати функцію -> Перезапустити сервер OpenSSH, якщо необхідно, відкрийте Послуги -> OpenSSH -> Властивості -> Тип запуску -> Автоматично (затримано)

  2. Встановіть та запустіть SFTPNetDrive, клацніть правою кнопкою миші на піктограму в прихованих значках -> Головне вікно (або можливо вже відкрите) -> Профіль -> новий профіль (сервер: localhost, користувач: * pwd: * Лист накопичувача: F (або інший) Додатково - > (Протокол -> зніміть прапорець стиснення; Вказана папка: G: \))

  3. у Bash (wsl): sudo mkdir / mnt / f; кріплення sudo -t drvfs F: / mnt / f

Я не впевнений, наскільки це стабільно, але мені вдалося відкрити файли в WSL.


-2

Існує (принаймні) два способи використання Bash в Windows:

  1. Bash, що постачається з WLS (під час встановлення Linux у Windows 10 з Windows Store чи інших джерел)
  2. Git-Bash на Windows

Git-Bash має доступ до мережевих папок (встановіть git-bash> перейдіть до мережевої папки> клацніть правою кнопкою миші> "Git Bash Here"> запустіть, pwdщоб побачити шлях).

Якщо вам доведеться використовувати версію WLS bash, тоді ви можете зателефонувати Git-Bash з WLS bash наступним чином:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.