![Linux:如何通过sftp将目录中的所有文件发送到远程目录](https://linux22.com/image/605892/Linux%EF%BC%9A%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87sftp%E5%B0%86%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9C%E7%A8%8B%E7%9B%AE%E5%BD%95.png)
就像标题表明我有一个本地目录一样,说:
/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/*