copiar arquivo do windows para Linux

16

Estou escrevendo um script. Ele rodará uma máquina Linux. seus objetivos incluem linux, solaris e windows.

Eu sei que posso usar o scp para copiar arquivos entre * nix. mas que tal copiar arquivos do windows?

Essas janelas são máquinas de teste, às quais não se espera que um software específico seja instalado, pois o sistema operacional pode ser reinstalado frequentemente.

Alex
fonte

Respostas:

21

Use o Samba .

O Samba fornece um serviço de compartilhamento de arquivos compatível com o Windows.

Você pode compartilhar um diretório (por exemplo, /srv/samba/sharename ) em seu computador Linux e acessá-lo a partir do Windows como este: \\linuxservername\sharename. Não precisa de nenhum software extra no lado do Windows.

O Samba está incluído na maioria das distribuições Linux. Instale-o usando o gerenciador de pacotes, por exemplo:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Para configurar o Samba, consulte:

ou pesquise no Google para encontrar um guia para sua distribuição.

Observe que pode ser necessário configurar o firewall do Linux, caso você o utilize, para aceitar conexões às portas 137 / tcp, 138 / tcp, 139 / tcp e 445 / tcp (consulte isso e isto ).


Na descrição acima, o computador Linux é um servidor Samba e o Windows monta um compartilhamento a partir dele.

No seu comentário abaixo, você menciona que deseja automatizar o processo de transferência . Isso pode ser conseguido revertendo as funções para que o Windows atue como servidor e o Linux se conecte a ele usando smbclient.

Com smbclientvocê, você não precisa montar o compartilhamento do Windows. Por exemplo, para recuperá C:\Directory\file.txt-lo e copiá-lo para o /tmpseu computador Linux, faça o seguinte:

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-cComando para executar. Veja man smbclientpara detalhes.

-U Nome de usuário e senha para acessar o compartilhamento especificado como username%password

Modifique-o de acordo com suas necessidades e adicione-o ao seu script.

jaume
fonte
@max, obrigado por suas ótimas respostas. Eu sei que o samba pode funcionar com o Windows. Mas ainda precisa de envolvimento de seres humanos ao copiar um arquivo. Como meu script será executado em um linux e a máquina instalou o samba, como posso deixar que o único script faça o trabalho de cópia? Parece que é melhor montar o disco do Windows no Linux, para poder acessá-lo no Linux. O samba pode fazer isso?
11283 Alex
Sim, o Samba pode fazer isso. Melhor ainda, você não precisa montar o compartilhamento do Windows. Você pode usar smbclientpara se conectar ao compartilhamento do Windows, copiar um arquivo e desconectar. Eu editei minha resposta, dê uma olhada nela.
jaume
De nada, estou feliz por poder ajudar.
jaume
1
Especialmente a -copção vale a pena usar em casos simples. Na minha máquina, a senha é um argumento simples (sem nenhuma opção). Além disso - prefiro manter as credenciais afastadas dos leitores da linha de comando (usando psou [h]top, por exemplo), ligando -U $(cat .username) $(cat .password).
Tomasz Gandor
3

Sei que você disse que não pode esperar a instalação de software específico, mas existem clientes SSH / SCP / SFTP para Windows que não requerem instalação específica; apenas o executável está disponível. Um que eu continuo recorrendo é o PuTTY com seus companheiros pscpe psftpferramentas, mas estou certo de que existem alternativas. pscpe psftppode ser conduzido completamente a partir da linha de comando e, portanto, é adequado para tarefas de automação. Ambos têm até um-batch switch que é descrito como "desativar todos os prompts interativos" e quase certamente pode ser aproveitado.

Como você presumivelmente já possui um servidor SSH / SCP / SFTP instalado e configurado no servidor, isso evita a instalação de qualquer software em qualquer host, apenas com a finalidade de copiar esses arquivos.

Outra vantagem pode ser o fato de o PuTTY ser de código aberto sob uma licença permissiva; portanto, se ele não fizer o que você deseja imediatamente, deve ser relativamente fácil fazê-lo da maneira que você preferir.

um CVn
fonte
1
Obrigado por sua recomendação. Vou tentar pscp e psftp. Eles também são ótimas ferramentas.
Alex
1

Como sou um CentOS 6usuário, tentei esse método emCentOS 6

Instale o samba usando

[root @ server ~] # yum instala samba

Consulta para confirmação

[root @ server ~] # rpm -qa samba
samba-3.5.10-125.el6.i686

Crie um usuário do Samba.

[root @ server ~] # useradd sambashare

Agora crie a senha do samba para o nome de usuário sambashare usando o comando smbpasswd.

[root @ server ~] # smbpasswd - um sambashare
Nova senha SMB:
Digite novamente a nova senha SMB:
Usuário adicionado sambashare.

Crie um diretório de compartilhamento samba

[root @ server ~] # mkdir / compartilhamento

alterar a propriedade da pasta de compartilhamento

[root @ server ~] # chown -R sambashare: sambashare / share /

Abra o arquivo /etc/samba/smb.confe adicione as linhas abaixo.

[compartilhar]
comment = Compartilhar
caminho = / compartilhar
gravável = sim
usuários válidos = sambashare

Iniciar serviço de samba

[root @ server ~] # service smb restart
Desligando serviços SMB: [OK]
Iniciando serviços SMB: [OK]

Verifique sua configuração usando o testparmcomando

.
.
[compartilhar]
comment = compartilhar
caminho = / compartilhar
usuários válidos = sambashare
somente leitura = não

No sistema Windows, digite isso em run

insira a descrição da imagem aqui

Agora digite o nome de usuário e a senha do samba

insira a descrição da imagem aqui

Você terminou

insira a descrição da imagem aqui

max
fonte
Muito obrigado, max. para o seu tutorial muito vívido para um novato.
21413 Alex
@Alex você é bem-vindo ... :-)
max