Вопрос: Как получить полный каталог в sftp?


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

get [directory]

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

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

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


157
2017-09-12 21:39


Источник


Рекурсивный put / get был добавлен в OpenSSH в 5.4, который был выпущен в 2010 году. Возможно, вы захотите обновить свои серверы, так как он также добавляет множество исправлений ошибок и улучшает функции безопасности. - Lèse majesté


Ответы:


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

get -r *

230
2017-11-29 21:38



Спасибо, что ответили на вопрос. - jonnyflash
Дает мне: get: Invalid flag -r - ghbarratt
Это также дает мне флаг Invalid. Я не уверен, что это поддерживается во всех системах. - Ben
@Ben: Когда я задал этот вопрос в 2009 году, -r флаг не существует. Обновлена ​​ли ваша система? - Matthew Pirocchi
@silvinci не все существующих систем. Недопустимый вариант с CentOS 6.4 openssh-clients-5.3p1-84.1.el6.x86_64 - CrackerJack9


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

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

50
2017-09-12 21:51



Это работает, но было бы неплохо сделать это из SFTP (чтобы я мог видеть, что я копирую, прежде чем копировать). Это возможно? - Matthew Pirocchi
@ Матвей: Я так не думаю. Я задал себе тот же вопрос в течение некоторого времени, и лучший ответ, который у меня есть на данный момент, - это scp -r, Или вы можете использовать продвинутый клиент SFTP, такой как Filezilla. - Cristian Ciupitu
scp -r будет следовать символическим ссылкам ... - jsleuth
Некоторые системы могут sftp, но нет scp доступ. - Turion


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

lftp sftp://user@host

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

mirror -R

Или просто загрузить:

mirror

Вы должны cd в каталоги, которые вы хотите отразить. Работает волшебно!


36
2018-04-08 13:54



+1 lftp похож на маленький пучок магии и радости! - WCWedin


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


15
2017-09-13 03:11



Ничего себе, наутилус очень хорошо работает с SFTP. Я добавил закладку в Наутилус, и теперь все это смешно. Благодаря! - Matthew Pirocchi
У меня возникла проблема с Nautilus SFTP. Да, это действительно удобно, но я не смог насытить сеть 1 Гбит / с через Наутилус, sftp/ssh интерфейс командной строки я был (около 100 МБ / с передачи файлов). Таким образом, проблема была Nautilus на GNU / Linux Mint. - stamster


хорошо это небольшое руководство должно помочь, зеркало удаленного сервера в локальную папку с 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
2018-03-10 01:18



Спасибо, это сработало для меня, после того, как другие методы потерпели неудачу (в частности, опция «-r» на sftp). Первая часть команды в моем случае должна была быть указана, из-за символов доллара в пароле lftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path' - Jason


Пытаться mget вместо get,

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

sftp> cd dir_to_get
sftp> mget *

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


12
2017-09-12 22:34



mget не работает лучше, чем получить для меня. - Matthew Pirocchi
получение Не удается загрузить нерегулярный файл с этим - Dchris
Это работало для меня в системе, где «get -r» не работал. - Tchotchke


get -r [directory]

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


9
2018-03-06 16:56



ИМО это лучший ответ на этот вопрос. :) - ramrunner
Это дубликат ответ из 29.11.10 (почти полтора года назад). - Cristian Ciupitu


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

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

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


4
2018-01-11 09:50



Это в основном дубликат ответ из 29.11.10 (почти два года назад). - Cristian Ciupitu


У меня есть папка dist 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. lcd / tmp / dist

Шаг 4. mget *

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

Шаг 6. mget *

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

$ ls
Audio.jar  lib  README.TXT

0
2017-09-28 08:39