176

Я только учусь использовать sftp и хочу скопировать каталог с удаленного компьютера на мой локальный компьютер. Если я попробую

get [directory]

это дает мне эту ошибку:

Cannot download non-regular file: /home/mpirocch/Documents

get -R тоже не работает.

9 ответов9

249

Используйте флаг -r (рекурсивный):

get -r *
52

Использование:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
40

Используйте lftp:

lftp sftp://user@host

Затем в lftp cd в каталог, который вы хотите скопировать, и используйте команду mirror для рекурсивной загрузки выбранного каталога, например:

mirror

Эта команда принимает параметры и аргументы:

mirror [OPTIONS] [source [target]]

Например, опция -R (или --reverse) приведет к загрузке дерева локальных каталогов в удаленный каталог:

mirror -R

Смотрите man-страницу lftp(1) на сайте проекта или на Debian.org для других команд и опций.

15

Не используйте программу sftp напрямую, если вы можете найти что-то лучшее. Для Linux многие файловые менеджеры (по крайней мере, Nautilus и Dolphin, GNOME и KDE) изначально поддерживают sftp, и всегда есть sshfs. Для Windows есть WinSCP и, возможно, другие. Смысл всего этого в том, чтобы позволить вам получать доступ к файлам через sftp, как если бы они были на обычном файловом элементе, поэтому вам не нужно заботиться о том, чтобы вы обращались к ним через sftp.

13

хорошо это маленькое руководство должно помочь, зеркалировать удаленный сервер в локальную папку с lftp

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = использует протокол SFTP
  • mirror = режим зеркала
  • verbose = показывает загружаемые файлы
  • use-pget-n = количество сегментов, действительно полезно для ускорения больших файлов
  • parallel = загрузка файлов множителя одновременно

если вы хотите загружать файлы параллельно, отключите use-pget-n=8 с параметром --parallel=8

надеюсь, это поможет всем, кому нужно зеркалировать удаленную папку в локальную папку

13

Попробуйте mget вместо get .

Пояснение: mget будет работать, если вы находитесь в каталоге, который хотите скопировать; если вы делаете что-то вроде этого:

sftp> cd dir_to_get
sftp> mget *

он получит все файлы в этом каталоге. Однако он не будет рекурсивно получать содержимое каких-либо подкаталогов.

9
get -r [directory]

получает [directory] и все под ним, где r обозначает рекурсивный. Я нашел это, просто набрав help из sftp .

4

Как и в случае с cp:

scp -rp user@host:/path/to/dir dir

Вышеуказанное сохранит время и режимы исходных файлов и подкаталогов. Это особенно полезно для поиска резервных копий.

0

У меня есть папка Java dist на удаленном сервере, где у меня есть следующее дерево:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

Цель: я хочу использовать SFTP? И поместите их в /tmp /<>

Шаг 1. sftp remoteuser @ ip

Шаг 2. cd /var /tmp

Шаг 2. lmkdir /tmp /dist; lmkdir /tmp /dist /lib

Шаг 3. Жк / тм / дист

Шаг 4. mget *

Шаг 5. lcd /tmp /dist /lib

Шаг 6. Mget *

Шаг 7. наконец у меня есть цель

$ ls
Audio.jar  lib  README.TXT

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .