Come accedere all'unità montata in rete sul sottosistema Windows Linux?


62

Ho un disco samba che è montato sul mio computer Windows locale.

Ho un disco "/ mnt / c" in WLS ("Windows 10 bash"), ma non "/ mnt / z".

C'è un modo per accedervi in ​​qualche modo? Posso rimontarlo in WLS?


3
C'è discussione su questa funzionalità nel Feedback per gli sviluppatori Microsoft wpdev.uservoice.com/forums/…
Nelson

Risposte:


23

[Aggiornamento: apparentemente questa funzione è disponibile nella build 16176 . Non l'ho ancora provato.]

No, anche se potrebbe esserci qualche trucco che non ho scoperto. Il sottosistema Windows per Linux non monta unità di rete. Un dipendente Microsoft dice qui (in un commento):

Al momento "montiamo" solo unità fisse. Le unità USB / rimovibili / di rete non sono attualmente gestite. Questa funzionalità è presente nel nostro backlog, ma non sarà presto disponibile sulle schede.

Quindi non trattenere il respiro.

Ho tentato di aggirare il problema utilizzando un collegamento simbolico, in questo modo:

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

Il collegamento funziona perfettamente in Windows "normali" (cmd.exe, PowerShell, esploratore di file, ecc.), Ma è invisibile a WSL:

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

Per mio uso, questa limitazione è uno spettacolo. Ho delle cose su unità di rete che non sono disposto a spostare. Ci sono alternative; Sto usando Cygwin.


D'accordo, questo è uno showtopper anche per me - ho appena installato msys2 per questo.
Ela782


l'ordine dei tuoi argomenti su mklink è sbagliato - dovrebbe essere linkname target, nontarget linkname
masterxilo il

Sì, masterxilo, hai ragione: qui ho sbagliato il comando mklink. Fisso. Quando l'ho provato, l'ho fatto bene e non ha funzionato di fronte a WSL. Ora è un punto controverso, poiché WSL ora può montare condivisioni di rete. Ma grazie per la correzione. Anche se quasi nessuno sta guardando questa risposta, odio lasciare un errore del genere.
Joseph Thvedt,

109

dal link bleater pubblicato

Montaggio di DrvF

Per montare un'unità Windows usando DrvFs, puoi usare il normale comando mount di Linux. Ad esempio, per montare un'unità rimovibile D: come directory / mnt / d, eseguire i comandi seguenti:

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

Ora, sarai in grado di accedere ai file del tuo disco D: sotto / mnt / d. Quando si desidera smontare l'unità, ad esempio per poterlo rimuovere in sicurezza, eseguire il comando seguente:

$ sudo umount /mnt/d

Montaggio dei percorsi di rete

Quando si desidera montare un percorso di rete, è possibile ovviamente creare un'unità di rete mappata in Windows e montarla come indicato sopra. Tuttavia, è anche possibile montarli direttamente utilizzando un percorso UNC:

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

Nota le virgolette singole attorno al percorso UNC; questi sono necessari per evitare la necessità di sfuggire alle barre rovesciate. Se non circondi il percorso UNC con virgolette singole, devi evitare le barre rovesciate raddoppiandole (ad es \\\\server\\share.).

WSL non ha alcun modo per specificare quali credenziali utilizzare per connettersi a una condivisione di rete. Se è necessario utilizzare credenziali diverse per connettersi al server, specificarle in Windows accedendo alla condivisione in Esplora file, utilizzando Gestione credenziali di Windows o il comando net use. Il comando net use può essere richiamato dall'interno di WSL (usando net.exe use) tramite interop. Digitare net.exe help use per ulteriori informazioni su come utilizzare questo comando.


2
totalmente lavorato per il mio "bash per Windows 10"! Grazie mille!
Ying Zhang,

6
La risposta corretta dovrebbe essere cambiata in questa in quanto risponde direttamente alla domanda.
Tomek,

Per ottenere DrvFs è necessario "Build di Windows Insider". -1 (in realtà non votato verso il basso)
FractalSpace

5
Non ho build di Windows Insider e funziona per me
gman

2
Questo monta la condivisione, ma tutto è di proprietà di root e alcuni file sono illeggibili (anche con sudo e anche se le autorizzazioni all'interno di WSL sono 777). Riesco a leggere i file da Windows File Explorer. L'aggiunta di eventuali opzioni di mount ( -o) mi dà l'errore "tipo fs errato, opzione errata, superblocco errato".
Jay K,

2

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

Ecco un modo per montare GFS in WSL basato su Far funzionare `sshfs` su WSL o trovare un'alternativa Il trucco è usare https://www.nsoftware.com/sftp/netdrive/ per ssh in GFS da Windows e convertirlo su un filesystem che può essere montato sotto WSL.

  1. Installa OpenSSH Server in Win10 Impostazioni Win10 -> App -> Gestisci funzionalità opzionali -> Aggiungi funzionalità -> Riavvia il server OpenSSH se necessario apri Servizi -> OpenSSH -> Proprietà -> Tipo di avvio -> Automatico (ritardato)

  2. Installa ed esegui SFTPNetDrive, fai clic con il tasto destro sull'icona nelle icone nascoste -> Finestra principale (o forse già aperta) -> Profilo -> nuovo profilo (server: localhost, utente: * pwd: * Drive Letter: F (o altro) Avanzate - > (Protocollo -> deseleziona la compressione; Cartella specificata: G: \))

  3. in Bash (wsl): sudo mkdir / mnt / f; sudo mount -t drvfs F: / mnt / f

Non sono sicuro di quanto sia stabile, ma sono stato in grado di aprire i file in WSL.


-2

Esistono (almeno) due modi per utilizzare Bash in Windows:

  1. Il Bash fornito con WLS (durante l'installazione di Linux su Windows 10 da Windows Store o altre fonti)
  2. Git-Bash su Windows

Git-Bash ha accesso alle cartelle di rete (installa git-bash> vai alla cartella di rete> fai clic con il pulsante destro del mouse> "Git Bash qui"> corri pwdper vedere il percorso).

Se si deve utilizzare la versione WLS di bash, quindi è possibile chiamare Git-Bash da WLS bash come segue:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.