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.