Linux: Как отправить все файлы в каталоге в удаленный каталог через sftp

Так же, как и название sugests, у меня есть местный каталог, скажем:

/home/whoever/files_to_send

И я хочу отправить все файлы в этом каталоге в удаленное место:

my_user@my.server.com:/some/remote/directory

Как мне это сделать с SFTP?

PS. Мне нужен ответ для SFTP, я не могу использовать SCP или что-то еще.

2 ответа

Решение

Вы можете использовать put команда с -r опция для рекурсивной копии.

 put [-Ppr] local-path [remote-path]
         Upload local-path and store it on the remote machine.  If the remote path name is not specified, it is given the same name it has on the local machine.  local-path may contain glob(3) char‐
         acters and may match multiple files.  If it does and remote-path is specified, then remote-path must specify a directory.

         If either the -P or -p flag is specified, then full file permissions and access times are copied too.

         If the -r flag is specified then directories will be copied recursively.  Note that sftp does not follow symbolic links when performing recursive transfers.

Интерактивный режим

$ sftp my.server.com 
Connected to my.server.com.
sftp> put -r /home/whoever/files_to_send /some/remote/directory

Одиночная команда для запуска cron

$ cat batchfile
put -r /home/whoever/files_to_send /some/remote/directory
$ sftp -b batchfile my.server.com

Что вы действительно должны извлечь из этого, это прочитать онлайн-руководство, sftp(1),

Я хотел синхронизировать весь каталог (со всеми подпапками также рекурсивно). Я не мог сделать это с sftp но я смог сделать это с Yafc

Установите его (OSX)

brew install yafc

Подключиться к серверу

yafc sftp://user@host.com

Предполагая, что папка "example" существует локально, -r для рекурсии, -f для принуждения (не просить перезаписать)

put -rf example

В моем случае мне нужно также chmod файлы, потому что разрешения не были скопированы (даже с флагом -p)

chmod 0755 example/*
Другие вопросы по тегам