Назад | Перейти на главную страницу

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

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

/home/whoever/files_to_send

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

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

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

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

Вы можете использовать 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

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

put -rf example

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

chmod 0755 example/*