使用curl自动SFTP上传

使用curl自动SFTP上传

我希望每天使用自动 ftp 命令将文件上传到远程服务器。有人可以帮我检查下面的命令是否正确或错误吗?

curl -Tu username:password /path/to/dir/*(om[1]) sftp://sftp.example.com/remote/dir

在哪里

  • username:password是我自己的用户名和密码。

  • /path/to/dir/*(om[1]):从我的本地目录获取最新(更新)文件

  • sftp://sftp.example.com/remote/dir:安全文件传输

答案1

您的命令行有问题,您可以检查手册页。基本上你需要将-T <file to be uploaded> 与 分开-u <user:password>。最后你的命令行应该看起来更像:

curl -T /path/to/dir/*(om[1]) -u username:password sftp://sftp.example.com/remote/dir

不过,我不确定您提到的正则表达式的实际含义*(om[1])

当然,如果使用 SFTP,您可以使用 SSH 私钥进行身份验证,而不是根据选项使用用户名和--key密码--key-type。有关详细信息,请参阅上面链接的文档。

最后,问题是关于FTP而命令行示例是关于SFTP,但这不应该改变我提出的解决方案。

答案2

为什么不使用 rsync 来代替呢?您可能必须安装它(使用您的包管理器),但它是为此类事情而设计的。

RSYNC_PASSWORD='password' rsync -rtv /path/to/dir/ [email protected]:remote/dir

-r 将递归 rsync,-t 保留时间戳,因此现有文件不会重新上传(有效),而 -v 则很详细。

如果您创建并复制 ssh 公钥,则不需要执行该RSYNC_PASSWORD='password'部分。

如果您没有公钥/私钥组合,请运行:

ssh-keygen

然后

ssh-copy-key-id [email protected]

这假设您的远程服务器支持连接和更新文件$HOME/.ssh/authorized_keys;否则,您必须authorized_keys使用公钥手动上传文件。

这假设您正在运行最新版本的 Linux。 Mac OS 等 Unix 系统没有ssh-copy-key-id.以下是有关在远程主机上生成和安装公钥的更多信息:

http://www.ece.uci.edu/~chou/ssh-key.html

相关内容