|
Rsync + SSH -- 让 Server 不用密码实现自动异地备<br>
<br>
<br>
1. 完成单向Trusted SSH Authorized﹕ <br>
我要 A (10.0.0.1) 要对 B (192.168.0.1) 做异地备援 ...所以我针对 A 让它使用SSH连到 B 时...不需要输入密码...User 是 Root...SSH Version2的版本..首先要先在A(10.0.0.1)产生public/private dsa key pair..<br>
……………………………………………………………………………………………………<br>
[root@mondeo home]# cd /root/.ssh/<br>
[root@mondeo .ssh]# ssh-keygen -d<br>
Generating public/private dsa key pair.<br>
Enter file in which to save the key (/root/.ssh/id_dsa): <br>
Enter passphrase (empty for no passphrase): <-- 此处不打passphrase..下次才不会询问password<br>
Enter same passphrase again:<br>
Your identification has been saved in /root/.ssh/id_dsa.<br>
Your public key has been saved in /root/.ssh/id_dsa.pub.<br>
The key fingerprint is:<br>
11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66 root@mondeo.adj.idv.tw<br>
[root@mondeo .ssh]#<br>
……………………………………………………………………………………………………<br>
这时会在系统下看到两个档案...id_dsa与id_dsa.pub 现在要把id_dsa.pub丢到192.168.0.1 并且更名为 authorized_keys2<br>
……………………………………………………………………………………………………<br>
[root@mondeo .ssh]# scp id_dsa.pub 192.168.0.1:/root/.ssh/authorized_keys2<br>
root@192.168.0.1's password:<br>
id_dsa.pub 100% |*****************************************************| 612 00:00<br>
[root@mondeo .ssh]#<br>
……………………………………………………………………………………………………<br>
现在您可以执行ssh 192.168.0.1 看看能否登入而不需要输入密码...<br>
2.使用rsync 做Remote sync﹕<br>
rsync特性简介 :<br>
rsync是unix-like系统下的数据镜像备份工具,从命名上就可以看出来了remote sync。它的特性如下: <br>
1、可以镜像保存整个目录树和文件系统。 <br>
2、可以很容易做到保持原来文件的权限、时间等等。 <br>
3、无须特殊权限即可安装。 <br>
4、优化的流程,文件传输效率高。 <br>
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 <br>
6、支持匿名传输。 <br>
首先要先对B(192.168.0.1)把Rsync的Server on起来...<br>
……………………………………………………………………………………………………<br>
[root@linux /]#chkconfig --list rsync<br>
rsync off<br>
[root@linux /]#chkconfig rsync on<br>
……………………………………………………………………………………………………<br>
现在我先在A(10.0.0.1)上建一个 Backup directory...然后对B(192.168.0.1)的mysql跟html的目录做异地备援...偶写一个简单的script如下:<br>
……………………………………………………………………………………………………<br>
[root@mondeo /]# mkdir backup<br>
[root@mondeo backup]#vi sync<br>
<br>
rsync -avlR --delete -e ssh 192.168.0.1:/var/lib/mysql /backup/<br>
rsync -avlR --delete -e ssh 192.168.0.1:/var/www/html /backup/ <br>
[root@mondeo backup]#chmod 700 sync<br>
……………………………………………………………………………………………………<br>
参数意义如下﹕<br>
<br>
-a, --archive<br>
It is a quick way of saying you want recursion and want to preserve almost everything.<br>
-v, --verbose<br>
This option increases the amount of information you are given during the transfer.<br>
-l, --links<br>
When symlinks are encountered, recreate the symlink on the destination.<br>
-R, --relative<br>
Use relative paths. 保留相对路径...才不会让子目录跟 parent 挤在同一层...<br>
--delete<br>
是指如果Server端删除了一文件,那客户端也相应把这一文件删除,保持真正的一致。 <br>
-e ssh<br>
建立起加密的连接。 <br>
参数的使用因人而异...您可以man rsync来使用更多的参数...<br>
测试看看:<br>
……………………………………………………………………………………………………<br>
[root@mondeo backup]# ./sync<br>
<br>
receiving file list ... done<br>
.<br>
.<br>
.<br>
done<br>
wrote 16 bytes read 107 bytes 82.00 bytes/sec<br>
total size is 0 speedup is 0.00<br>
receiving file list ... done<br>
.<br>
.<br>
.<br>
done<br>
wrote 16 bytes read 921 bytes 624.67 bytes/sec<br>
total size is 308331 speedup is 329.06<br>
[root@mondeo backup]#<br>
……………………………………………………………………………………………………<br>
看到没询问密码....以及有把档案copy过来就没问题啰....当然你可以把远程的数据做个变动...看是否真有同步啦....<br>
2. 使用crontab 来做自动排程﹕ <br>
<br>
现在设好之后...我希望每天的0点0分...夜深人静的时后再来帮我做sync....当然您想要多久做 sync 看个人需求啰...<br>
……………………………………………………………………………………………………<br>
[root@mondeo backup]# crontab -e<br>
0 0 * * * /backup/sync<br>
……………………………………………………………………………………………………<br>
如此一来..算是大功告成了...原则上您已具备自动加密异地备援啰....赶紧找两台机器来试试吧...<br>
以上只是个人测试结果...如有错误...烦请指教!!!<br>
<br>
|
|