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

hol*_*eap 38 linux samba download

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

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory
Run Code Online (Sandbox Code Playgroud)

如何递归下载此目录?

(使用smbclient v3.6.23。服务器是一台运行Windows 7家庭版的电脑。)

Fra*_*mas 74

根据smbclient 联机帮助页,您需要使用mget带有maskandrecursionpromptset的命令。然后cd到您要递归获取的目录:

smbclient '\\server\share'
mask ""
recurse ON
prompt OFF
cd 'path\to\remote\dir'
lcd '~/path/to/download/to/'
mget *
Run Code Online (Sandbox Code Playgroud)

或者,全部在一条线上,

smbclient '\\server\share' -N -c 'prompt OFF;recurse ON;cd 'path\to\directory\';lcd '~/path/to/download/to/';mget *'`
Run Code Online (Sandbox Code Playgroud)

如果您需要对服务器进行身份验证-N,请使用连接命令上的密码设置。

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

  • 另外,我认为您在单行中的报价有些混乱。我的`smbclient` 似乎只喜欢处理“双引号”中的目录。 (3认同)
  • @mgutt,一旦安装了 smbshare,请考虑在 SMB 之上使用 rsync。SMB 本身没有用于单/双向同步的语义,但 rsync (linux) 和 robocopy (windows) 等工具可以在现有安装点上提供非常强大的同步功能。另请注意,SMB 确实引入了一些与文件锁定相关的特性,因此您可能需要争取最终的并发性,而不是单点并发性。 (2认同)