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

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

就像标题表明我有一个本地目录一样,说:

/home/whoever/files_to_send

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

[email protected]:/some/remote/directory

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

附言:我需要一个关于 SFTP 的具体答案,我不能使用 SCP 或其他任何东西。

答案1

您可以使用带有递归复制选项的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)

答案2

我想同步整个目录(以及所有子文件夹,也递归同步)。我无法完成它,sftp但我能够做到雅富

安装(OSX)

brew install yafc

连接到服务器

yafc sftp://[email protected]

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

put -rf example

就我而言,我还需要对文件进行 chmod,因为权限未被复制(甚至没有使用 -p 标志)

chmod 0755 example/*

相关内容