Copiar arquivos e pastas entre Windows e Linux com Samba

Copiar arquivos do Windows para o Linux e vice-versa é definitivamente uma tarefa bem comum, mas por vezes pode ser traumática e, até mesmo o “fim da picada” para alguns usuários de Linux.

Para a felicidade de todos, isto é apenas mito, pois é muito simples trocar arquivos pela rede entre estes dois sistemas operacionais, para tanto precisamos ter instalado no sistema Linux o programa smbclient.

Segue alguns exemplos práticos:

Para copiar um arquivo do Linux para um computador com o Windows (IP 192.168.12.201) no qual possui um compartilhamento com nome teste, podemos fazer assim:

smbclient //192.168.12.201/teste -U usuario --pass senha -c "put /etc/hosts hosts;"

Este comando, vai copiar o arquivo /etc/hosts para //192.168.12.201/teste/, note que no exemplo você deve substituir usuario e senha, pelo nome do usuário e senha no Windows.

Agora fazendo o inverso, copiando do Windows para uma pasta no Linux:

smbclient //192.168.12.201/teste -U guest --pass "" -c "get hosts /etc;"

Note que no comando acima, omitimos a senha, isto porque estamos considerando que o compartilhamento no Windows permite conexões de convidado sem senha.

Pode haver a necessidade de copiar pastas e subpastas completas, para tal podemos usar os comandos recurse, prompt e mget ou mput, dependendo se você desejar copiar de ou para um compartilhamento Windows. Siga os exemplos abaixo:

smbclient //192.168.12.201/teste -U guest --pass "" -c "recurse; prompt; mget Descanso*;"

O comando acima, copia todas as pastas e subpastas que estiverem dentro da pasta com nome Descanso do compartilhamento Windows para a pasta atual no Linux.

O contrário, seria assim:

smbclient //192.168.12.201/teste -U guest --pass "" -c "recurse; prompt; mput Descanso*;"

Agora o comando acima está copiando a pasta Descanso para o compartilhamento Windows.

Por fim, como alternativa do envio da senha, podemos colocá-la ao final da linha de comando, veja o exemplo que segue:

smbclient //192.168.12.201/teste -U usuario -c "put /etc/hosts hosts;" senha

Deixe uma resposta