如何使用smbclient递归下载目录?


20

当我尝试使用获取目录时get "Path To\Directory\",出现以下错误:

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory

如何递归下载此目录?

(使用smbclient v3.6.23。该服务器是运行Windows 7 Home Edition的计算机。)


smbclient使用与FTP和HTTP之类的服务器客户端相同的语义类型,其中每个get或put都针对一个文件。您可以编写脚本来按目录执行检索,也可以使用mget / mput命令指定掩码或通配符来检索多个文件,如我的答案所示。smbclient可能不是您所需要的正确工具。
弗兰克·托马斯

Answers:


48

对于smbclient联机帮助页,您需要使用mget带有maskrecursionprompt设置的命令。然后cd到您要递归获取的目录

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

或者,全部在一行上,

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

如果您需要对服务器进行身份验证,请添加-N并使用connect命令上的“密码”设置。

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


2
另外,我认为您的报价单行有点混乱。我smbclient唯一的似乎喜欢处理“双引号”中的目录。
c24w

只是复制并替换了文件夹,但没有用-尾随>
蜡笼

对于真正想要复制而没有问题的人,请遵循以下文章:indradjy.wordpress.com/2010/04/14/…(对我有帮助)
蜡笼

0

使用-D选项设置目录

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

如果要下载/获取文件,请执行

smbclient -D "\Path\To\Directory" -c "get target /tmp/target"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.