rsync结合expect实现自动备份

大家都知道rsync,就不多介绍了。
如果服务器禁用密码登录,必须使用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