Когда я пытаюсь использовать sftp для передачи каталога, содержащего файлы, я получаю сообщение об ошибке:
skipping non-regular file directory_name
Каталог содержит пару файлов и два подкаталога.
Что я делаю неправильно?
sftp
Как cp
и scp
, требует, чтобы при копировании папки (и ее содержимого, очевидно) вы явно указывали ей, что хотите рекурсивно перенести папку с помощью этой -r
опции.
Итак, добавьте -r
в команду.
-r
кsftp
команде при подключении.sftp -r user@host
Couldn't canonicalise: No such file or directory
.# sftp user@remote-host
#> get -r remote-folder
Я могу только предложить, вы используете
rsync
. Это что-то вроде промышленного стандарта при перемещении файлов по защищенным соединениям.Это то, что я использую уже много лет.
(
-a
опция заботится о таких вещах, как рекурсия каталога)источник
-a
= рекурсия + сохранение символических ссылок, разрешений, времени модификации, владельца, группы, специальных файлов и файлов устройств (для последнего требуются привилегии суперпользователя);-l
= сохранить символические ссылки (уже включены в-a
);-P
= показать прогресс при передаче + сохранить частично переданные файлы;-v
= подробный режим (однако он кажется обязательным при использовании,-P
чтобы избежать странной ошибки?protocol version mismatch
);-z
= включить сжатие передаваемых данных.-l
переключатель использоваться или нет. Я помню, старые версии не включены-l
в-a
.Вы также можете использовать использование
scp
. Общий форматscp
означает «защищенная копия». Флаги-r
записаться в подкаталоги-p
сохранить время модификацииЯ считаю, что остальные предметы говорят сами за себя
источник
Это работает для меня:
1) подключиться
sftp
к удаленному хосту2) Перейдите в удаленный каталог, который вы хотите скопировать. (Пример: CD Music)
3) Перейдите в локальный каталог, в который вы хотите скопировать материал. (Пример: рабочий стол lcd)
4) Выполните эту команду:
get -r *
источник
Если
rsync
это не вариант, я бы порекомендовалlftp
:Затем используйте
mirror
команду для рекурсивной загрузки, например так:(Обратите внимание , что рекурсия по умолчанию.
-R
Для обратного . - сделать команду зеркала загрузки вместо загрузки Попробуйте добавить ,--dry-run
чтобы сделать исследование , чтобы убедиться , что он делает то , что вы ожидаете.)Или загрузить без рекурсии:
Вы должны
cd
в каталоги, которые вы хотите отразить. Работает отлично!источник
Если можете, используйте sshfs . Это файловая система FUSE , доступная в большинстве современных приложений и работающая с любым SFTP-сервером. Это удаленная файловая система: она позволяет вам манипулировать удаленными файлами (по протоколу SFTP) с помощью обычных утилит.
источник
Это что-то вроде клочья, но для меня работает следующее:
ssh
для входа на удаленный компьютерsftp
с удаленного компьютера на локальный компьютерget
команду с-r
возможностью переместить каталог и все его файлы.источник
sftp> get -r data /opt/bin get: Invalid flag -r
Если вы задаетесь вопросом «как мне использовать sftp для передачи каталога», то
Но если вы переносите каталог, я мог бы предложить два лучших варианта, в зависимости от ваших потребностей.
sftp
требует входа на удаленный сервер в ssh-подобной командной строке, но если вам нужен только файл (-ы), есть более простые и быстрые способы.УПП
Для одноразовой передачи, для загрузки попробуйте:
Rsync
Если вы планируете синхронизировать каталоги на регулярной основе, использование rsync имеет больше смысла. Он выполняет дельты между двумя каталогами, сохраняя время передачи и данные по проводам.
Вот список некоторых из наиболее распространенных опций rsync: ( взято отсюда )
Надеюсь, это поможет!
источник
вы можете попасть с сервера на локальный путь
источник