Как и в заголовке, у меня есть местный режиссер, скажем:
/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
$ 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/*