Как я могу рекурсивно загрузить каталог, используя smbclient?

23

Когда я пытаюсь получить каталог с get "Path To\Directory\", я получаю следующую ошибку:

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory

Как мне рекурсивно скачать этот каталог?

(Использование smbclient v3.6.23. Сервер - это компьютер под управлением Windows 7 Home Edition.)

hololeap
источник
smbclient использует семантику того же типа, что и серверные клиенты, такие как FTP и HTTP, где каждый получает или помещает цели в один файл. Вы можете написать сценарии для выполнения поиска по каталогу или использовать команды mget / mput, чтобы указать маску или подстановочный знак для получения нескольких файлов, как показано в моем ответе. возможно, что smbclient не совсем подходящий инструмент для ваших целей.
Фрэнк Томас

Ответы:

51

на странице руководства smbclient вам нужно использовать mgetкоманду, с maskи recursionи promptустановить. Затем 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 и используйте настройку пароля в команде подключения.

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

Фрэнк Томас
источник
2
Кроме того, я думаю, что ваши цитаты немного запутаны в одной строке. Моему, smbclientпохоже, нравится иметь дело с каталогами в «двойных кавычках».
c24w
Просто скопировал и заменил папки, но это не сработало - заканчивается трейлингом>
Wax Cage
Для людей, которые действительно хотят копировать без проблем, следуйте этой статье: indradjy.wordpress.com/2010/04/14/… (помогло мне)
Wax Cage
0

используйте опцию -D, чтобы установить каталог

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

если вы хотите скачать / получить файл, сделайте

smbclient -D "\Path\To\Directory" -c "get target /tmp/target"
aGuegu
источник