Como faço para baixar recursivamente um diretório usando o smbclient?

19

Quando tento buscar um diretório get "Path To\Directory\", recebo o seguinte erro:

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory

Como faço para baixar recursivamente este diretório?

(Usando o smbclient v3.6.23. O servidor é um computador executando o Windows 7 Home Edition.)

Hololeap
fonte
O smbclient usa o mesmo tipo de semântica que os clientes do servidor, como FTP e HTTP, em que cada um obtém ou coloca como destino um arquivo. você pode escrever scripts para executar recuperações por diretório ou usar os comandos mget / mput para especificar uma máscara ou curinga para recuperar vários arquivos, conforme mostrado na minha resposta. pode ser que o smbclient não seja a ferramenta certa para seus objetivos.
Frank Thomas

Respostas:

47

pelo manpage smbclient , você precisa usar o mgetcomando, com um maske recursione promptdefinida. Depois, cdpara o diretório que você deseja obter recursivamente

    smbclient '\\server\share'
    mask ""
    recurse ON
    prompt OFF
    cd 'path\to\remote\dir'
    lcd '~/path/to/download/to/'
    mget *

ou, tudo em uma linha,

smbclient '\\server\share' -N -c 'prompt OFF;recurse ON;cd 'path\to\directory\';lcd '~/path/to/download/to/';mget *'

se você precisar se autenticar no servidor, solte -N e use a configuração de Senha no comando connect.

http://technotize.blogspot.com/2011/12/copy-folder-with-ubuntu-smb-client.html

Frank Thomas
fonte
11
Além disso, acho que você deixou suas citações um pouco confusas no one-liner. Meu smbclientúnico parece gostar de lidar com diretórios em "aspas duplas".
C24w
Apenas copiado e substituída pastas, mas não funcionou - termina com arrastando>
Wax gaiola
Para as pessoas realmente querem copiar sem problemas siga este artigo: indradjy.wordpress.com/2010/04/14/... (me ajudou)
Wax gaiola
0

use a opção -D para definir o diretório

smbclient -D "\" -c ls
smbclient -D "\Path\To\Directory" -c ls

se você deseja baixar / obter o arquivo, faça

smbclient -D "\Path\To\Directory" -c "get target /tmp/target"
aGuegu
fonte