我希望每天使用自动 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
: 安全文件传输
为什么不使用 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