
На машине 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