Linux:如何通过sftp将目录中的所有文件发送到远程目录

就像标题摘要,我有一个当地的目标,说:

/home/whoever/files_to_send 

我想将该目录中的所有文件发送到远程位置:

 [email protected]:/some/remote/directory 

我如何使用SFTP做到这一点?

PS。 我需要一个SFTP特定的答案,我不能使用SCP或其他任何东西。

您可以将put命令与-r选项一起用于recursion拷贝。

  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)

我想同步整个目录(所有的子文件夹也recursion)。 我不能用sftp来完成,但我可以用yafc来完成

安装它(OSX)

 brew install yafc 

连接到服务器

 yafc sftp://[email protected] 

假设“example”文件夹在本地存在, -r用于recursion, -f用于强制(不要求覆盖)

 put -rf example 

在我的情况下,我也需要chmod文件,因为权限不被复制(甚至没有-p标志)

 chmod 0755 example/*