继续刚才的备份文件,刚才只是做到手动备份,定时自动备份的方法为运用crontab设置定时任务进行定时备份

自动定时备份遇到了一个问题就是远程连接需要输入密码

网上的ssh公钥私钥认证的方法可以进行linux与linux服务器间的认证,测试在windows上不可用,代码如下:

ssh-keygen -t rsa
结果如下
Generating public/private rsa key pair.

Enter file in which to save the key (/home/.username/ssh/id_rsa):#回车

Enter passphrase (empty for no passphrase):#回车

Enter same passphrase again:#回车

Your identification has been saved in /home/.username /.ssh/id_rsa.

Your public key has been saved in /home/.username /.ssh/id_rsa.pub.

The key fingerprint is:

38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c username@localhost

Generating RSA keys:

Key generation complete.
会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub

二:把id_rsa.pub文件拷贝到remote主机的用户目录下 然后再运行如下命令

cat id_rsa.pub >~/.ssh/authorized_keys
它将在/root/.ssh/目录下面生成authorized_keys这个文件

 

所以只能写一个简单的脚本test.sh,脚本如下:

 

set timeout 10
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn rsync -avSH $src_file $username@$host:$dest_file
expect {
         "(yes/no)?"
         {
             send "yes\n"
             expect "*assword:" { send "$password\n"}
         }
     "*assword:"
         {
             send "$password\n"
         }
     }
 expect "100%"
# expect eof

执行文件./test.sh 远程IP 远程用户名 远程密码 本地目录 远程目录

如果报错下载下expect的包:yum -y install expect

如下:./test.sh 192.168.1.1 administrator 123456 /home/test.123 /cygdrive/e/

将此命令写入crontab -e

0 0 * * * /home/test.sh 192.168.1.1 administrator 123456 /home/test.123 /cygdrive/e/ 

:wq保存退出即可