26

На машине AI есть папка

/home/a/

На машине BI есть папка

/home/b/

Я желаю передать все файлы, каталоги и подкаталоги /home /a в /home /b с помощью sftp. На машине AI пробовал команды:

sftp fibon82@machineB.com
put /home/a/* /home/b/

но это не работает, я получаю сообщение об ошибке: «пропуск нестандартного файла /home /a /a1» ... [a1 - это подкаталог a]
Как я мог изменить положенную инструкцию?

Спасибо! :)

РЕДАКТИРОВАТЬ:

Я решил с помощью scp:

scp -r /home/a/ fibon82@machineB.com:/home/b/

6 ответов6

20

Хотя rsync не совсем эквивалентен sftp, он является очень мощной альтернативой для scp и sftp, особенно при обновлении копий с компьютера A на компьютер B, поскольку он не копирует файлы, которые не были изменены; он также может удалять с компьютера B файлы, которые были удалены с компьютера A (конечно, только если это указано).

В вашем случае синтаксис будет

rsync -zrp /home/a/ user@remote.host.com:/home/b/

Опция -r предназначена для рекурсивного копирования файлов, -z включает сжатие во время передачи, а -p сохраняет права доступа к файлам (создание файлов, редактирование и т.д.) При копировании, чего scp не выполняет AFAIK. Возможно еще много вариантов; как обычно, прочитайте man страницы.

15

В sftp эта команда рекурсивно загружает содержимое текущего каталога в удаленный текущий каталог:

 put -r .

Смотри man sftp.

9

scp (безопасная копия) - это Linux-де-факто для передачи файлов по безопасному туннелю. В вашем случае вы хотели бы использовать рекурсивный переключатель, например:

scp -r /home/a/ user@remote.host.com:/home/b/
4

Попробуйте использовать

put -r /home/a/ /home/b/

для получения дополнительной информации проверьте: это

0

На самом деле, поставить -r должно работать. Но папка назначения должна присутствовать на вашем удаленном хосте:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
-1

В моем случае rsync был невозможен, поэтому я использовал:

mput -rp /home/a/ /home/b/

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