Como acessar a unidade montada em rede no Windows Linux Subsystem?


62

Eu tenho uma unidade de samba que está montada no meu computador Windows local.

Eu tenho uma unidade "/ mnt / c" no WLS ("Windows 10 bash"), mas não "/ mnt / z".

Existe uma maneira de acessá-lo de alguma forma? Posso remontar no WLS?


3
Há discussões sobre esse recurso no Microsoft Developer Feedback wpdev.uservoice.com/forums/…
Nelson

Respostas:


23

[Atualização - aparentemente esse recurso está disponível na compilação 16176 . Ainda não tentei.]

Não, embora possa haver algum truque que não descobri. O Subsistema Windows para Linux não monta unidades de rede. Um funcionário da Microsoft diz aqui (em um comentário):

Neste momento, apenas "montamos" unidades fixas. As unidades USB / removíveis / de rede não são manipuladas no momento. Esse recurso está em nosso backlog, mas não está nos cartões tão cedo.

Então não prenda a respiração.

Tentei contornar isso usando um link simbólico, como este:

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

O link funciona perfeitamente no Windows "normal" (cmd.exe, PowerShell, gerenciador de arquivos etc.), mas é invisível para o WSL:

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

Para meu próprio uso, essa limitação é uma barreira. Tenho coisas nas unidades de rede que não estou disposto a mudar. Existem alternativas; Estou usando o Cygwin.


Concordo, este é um showstopper para mim também - eu acabei de instalar o msys2 para isso.
precisa saber é o seguinte


a ordem dos seus argumentos para o mklink está errada - deveria estar linkname target, nãotarget linkname
masterxilo

Sim, masterxilo, você está correto - eu tinha o comando mklink errado aqui. Fixo. Quando realmente tentei, fiz direito e não funcionou em relação à WSL. É um ponto discutível agora, já que a WSL agora pode montar compartilhamentos de rede. Mas obrigado pela correção. Mesmo que quase ninguém esteja olhando para essa resposta, odeio deixar um erro como esse.
Joseph Thvedt

109

do bleater de link postado

Montagem de DrvFs

Para montar uma unidade do Windows usando DrvFs, você pode usar o comando regular mount do Linux. Por exemplo, para montar um diretório removível da unidade D: as / mnt / d, execute os seguintes comandos:

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

Agora, você poderá acessar os arquivos da sua unidade D: em / mnt / d. Quando você deseja desmontar a unidade, por exemplo, para removê-la com segurança, execute o seguinte comando:

$ sudo umount /mnt/d

Montagem de locais de rede

Quando você deseja montar um local de rede, é claro que você pode criar uma unidade de rede mapeada no Windows e montá-la como indicado acima. No entanto, também é possível montá-los diretamente usando um caminho UNC:

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

Observe as aspas simples ao redor do caminho UNC; estes são necessários para evitar a necessidade de escapar das barras invertidas. Se você não colocar o caminho UNC entre aspas simples, precisará escapar das barras invertidas dobrando-as (por exemplo \\\\server\\share).

O WSL não tem como especificar quais credenciais usar para se conectar a um compartilhamento de rede. Se você precisar usar credenciais diferentes para se conectar ao servidor, especifique-as no Windows, navegando até o compartilhamento no File Explorer, usando o Gerenciador de Credenciais do Windows ou o comando net use. O comando net use pode ser chamado de dentro do WSL (usando o uso net.exe) por meio de interoperabilidade. Digite net.exe help use para obter mais informações sobre como usar este comando.


2
totalmente funcionou para o meu "bash para windows 10"! Muito obrigado!
Ying Zhang

6
A resposta correta deve ser alterada para esta, pois responde diretamente à pergunta.
Tomek

Você precisa do "Windows Insider build" para obter DrvFs. -1 (não efetivamente para baixo)
FractalSpace 27/02

5
Eu não têm janelas insider construção e está trabalhando para mim
gman

2
Isso monta o compartilhamento, mas tudo pertence à raiz e alguns arquivos são ilegíveis (mesmo com o sudo e mesmo se as permissões no WSL forem 777). Eu posso ler os arquivos do Windows File Explorer. Adicionar todas as opções de montagem ( -o) me dá o erro "tipo incorreto de fs, opção ruim, superbloco ruim".
Jay K

2

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

Aqui está uma maneira de montar o GFS no WSL com base em Como o `sshfs` trabalha na WSL ou em encontrar uma alternativa O truque é usar https://www.nsoftware.com/sftp/netdrive/ para ssh no GFS do Windows e convertê-lo para um sistema de arquivos que pode ser montado no WSL.

  1. Instale o OpenSSH Server em Win10 Win10 Configurações -> Aplicativos -> Gerenciar recursos opcionais -> Adicionar recurso -> Reinicie o Servidor OpenSSH, se necessário, abra Serviços -> OpenSSH -> Propriedades -> Tipo de inicialização -> Automático (atrasado)

  2. Instale e execute o SFTPNetDrive, clique com o botão direito do mouse no ícone nos ícones ocultos -> Janela principal (ou talvez já esteja aberta) -> Perfil -> novo perfil (servidor: localhost, usuário: * pwd: * Letra da unidade: F (ou outro) Avançado - > (Protocolo -> desmarque a compactação; pasta especificada: G: \))

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

Não tenho certeza de quão estável é, mas consegui abrir arquivos na WSL.


-2

Existem (pelo menos) duas maneiras de usar o Bash no Windows:

  1. O Bash que acompanha o WLS (ao instalar o Linux no Windows 10 da Windows Store ou de outras fontes)
  2. Git-Bash no Windows

O Git-Bash tem acesso às pastas da rede (instale o git-bash> vá para a pasta da rede> clique com o botão direito do mouse> "Git Bash Here"> execute pwdpara ver o caminho).

Se você precisar usar a versão WLS do bash, poderá chamar o Git-Bash a partir do WLS bash da seguinte maneira:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.