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

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

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

/home/a/

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

/home/b/

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

sftp [email protected]
put /home/a/* /home/b/

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

Спасибо! :)

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

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

scp -r /home/a/ [email protected]:/home/b/

решение1

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

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

rsync -zrp /home/a/ [email protected]:/home/b/

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

решение2

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

 put -r .

Видетьman sftp.

решение3

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

scp -r /home/a/ [email protected]:/home/b/

решение4

На самом деле, put -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

Связанный контент