使用 curl 自动上传 SFTP

Har*_*ari 5 sftp curl

我希望每天使用自动 ftp 命令将文件上传到远程服务器。有人可以在下面的命令中帮助我检查它是对还是错?

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

在哪里

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

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

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

lae*_*ade 3

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

RSYNC_PASSWORD='password' rsync -rtv /path/to/dir/ username@sftp.example.com:remote/dir
Run Code Online (Sandbox Code Playgroud)

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

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

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

ssh-keygen
Run Code Online (Sandbox Code Playgroud)

然后

ssh-copy-key-id username@sftp.example.com
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 你的观点无关紧要,因为OP使用curl命令。 (3认同)