When I try to fetch a directory with get "Path To\Directory\", I get the following error:

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory

How do I recursively download this directory?

(Using smbclient v3.6.23. The server is a computer running Windows 7 Home Edition.)

  • smbclient uses the same type of semantics that server clients like FTP and HTTP do, where each get or put targets one file. you can write scripts to perform retrievals by directory, or you can use the mget/mput commands to specify a mask or wildcard to retrieve multiple files, as shown in my answer. it may be that smbclient isn't quite the right tool for your purposes. – Frank Thomas Dec 25 '14 at 4:23

Per the smbclient manpage, you need to use the mget command, with a mask and recursion and prompt set. Then cd to the directory you want to get recursively:

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

Or, all on one line,

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

If you need to authenticate to the server drop -N and use the password setting on the connect command.


| improve this answer | |
  • 2
    Also, I think you've got your quotes a bit confused in the one-liner. My smbclient only seems to like dealing with directories in "double quotes". – c24w Jun 7 '17 at 14:32
  • Just copied and replaced folders but it didnt work - ends with trailing > – Wax Cage Aug 7 '17 at 21:40
  • For people really want to copy without problems follow this article: indradjy.wordpress.com/2010/04/14/… (helped me) – Wax Cage Aug 7 '17 at 21:46
  • Is it possible to skip already existing files? This question was asked here and I need its answer, too: unix.stackexchange.com/questions/551104/… – mgutt Apr 21 at 23:10
  • @mgutt, consider using rsync on top of SMB, once you have the smbshare mounted. SMB has no semantics for for uni/bi directional sync by itself, but tools like rsync (linux) and robocopy (windows) can provide very robust sync functionality on an existing mount point. Also note that SMB does introduce some idiosyncracies related to file locking, so you may need to shoot for eventual concurrence, rather than single point in time concurrency. – Frank Thomas Apr 22 at 3:02

You could also use the tar command for smbclient:

smbclient -Tc allfiles.tar /path/to/directory

This will create a tar archive allfiles.tar in the current directory the smbclient command is executed. Afterwards you can unpack the files again with tar xf allfiles.tar.

| improve this answer | |

use -D option to set the Directory

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

if you want to download/get the file, do

smbclient -D "\Path\To\Directory" -c "get target /tmp/target"
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.