Как я могу загрузить всю папку, содержащую другие папки, используя sftp на linux?
Я пробовал put -r directory/*
, который загружал только файлы, а не папки. Дал мне ошибку, не могу Couldn't canonicalise
.
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Здесь вы можете найти подробное объяснение, как скопировать каталог с помощью scp
. В вашем случае это будет что-то вроде:
$ scp -r foo [email protected]:/some/remote/directory/bar
Это скопирует каталог "foo" с локального хоста в "bar" удаленного хоста.
Здесь -r
- рекурсивная копия целых каталогов.
Вы также можете использовать rcp
с похожим синтаксисом. Единственное различие между ними заключается в том, что scp
использует безопасную оболочку, а rcp
использует удаленную оболочку.
BTW Вы упомянули ошибку "Не удалось выполнить канонизацию", если сервер sftp не сможет получить доступ к файлу/каталогу, указанному в команде.
Ответ 2
Для людей, которые действительно хотят прямого ответа на этот вопрос (вместо того, чтобы говорить, чтобы использовать что-то другое, кроме sftp)...
put -r local/path/to/directoryName
Загруженный каталог должен уже существовать в рабочем каталоге на сервере, поэтому вам может понадобиться его создать вначале.
mkdir directoryName
Ответ 3
sftp> mkdir source
sftp> put -r source
Uploading source/ to /home/myself/source
Entering source/
source/file1
source/file2
![введите описание изображения здесь]()
Ответ 4
Используйте scp
вместо этого. Он также использует SSH и может легко обрабатывать рекурсию.