2009年3月19日星期四

远程备份文件

如题,要远程备份文件,将一台机器上的文件copy到另一台机器上,我自然而然就想到了scp,但是由于文件很大,运行不是后台运行的,copy一段时候后,与主机连接中断,于是想到expect与scp结合。脚步如下
#!/usr/bin/expect -f
#combine scp and expect to bakcup files
spawn scp -r user@hostname:/source_director/  target_directory
expect "user@hostname's password:"
exec sleep 1
send "passwd\n"
但是这个要是在后台运行(通过at & corn)的话,也不好使,google一下说是后台运行没有终端这一说法,于是无法读取passwd,自然而然程序就停滞在那里了。
       解决的方法是建一个key trust。
ssh-keygen -t dsa
把id_dsa.pub放到远程$HOME/.ssh/authorized_keys里
scp id_dsa.pu user@远程host:/$HOME/.ssh/authorized_key
#这样的话,可以输入命令后就不用输入密码了
nohup scp -r user@hostname:/source_director/  target_directory &


搞定! ^_^

没有评论: