如果服务器禁用密码登录,必须使用key,rsync -e “ssh -i key”可以解决,但是密码需要非交互式输入(手工输入),而计划任务执行不可能人工守着吧。
结合expect即可实现自动输入密码
实例代码
代码如下 |
复制代码 |
#!/usr/bin/expect
set timeout 30
spawn rsync -avz --delete --exclude-from=exclude.list -e "ssh -i /home/user/.ssh/key" user@192.168.1.20:/home/htdocs/www.abc.com /home/backup/code/
expect "Enter passphrase for key '/home/user/.ssh/key':"
send "[yourpassword]r"
interact
|
exclude.list
代码如下 |
复制代码 |
Data/Cache
Data/Logs
|