数据同步-阿里云开发者社区

开发者社区> 安全> 正文
登录阅读全文

数据同步

简介:   数据同步在很多地方都会用到,再次和大家分享一下利用ssh和rsync来进行同步的过程。  配置SSH 这里配置的SSH服务器指的修改SSH的默认端口,以及配置SSH的密钥认证。

 

数据同步在很多地方都会用到,再次和大家分享一下利用ssh和rsync来进行同步的过程。 

配置SSH

这里配置的SSH服务器指的修改SSH的默认端口,以及配置SSH的密钥认证。这里以配置centos5.5系统为例。
首先需要两台服务器,一台备份目标服务器也就是rsync的目标服务器,一台源服务器。
配置ssh服务,为了避免每次同的时候输入密码,要配置ssh的密钥和公钥。
Centos linux一般默认的就安装ssh服务,并且已经启动。默认就可以使用(这一点debain和Centos有所不同)。
先来看一看ssh密钥登录的一个简单解释:
SSH 告诉远程 Server 端的 sshd ,它想使用 RSA 认证协议…远程的 sshd 会生成一个随机数,并用我们先前拷贝过去的公钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 本地服务器上运行的 ssh 。接下来,我们的 ssh 用 专用密钥对这个随机数进行解密后,再把它发回给远程服务器,类似于声明一下:“瞧,我真的有匹配的专用密钥;我能成功的对您的消息进行解密!”最后, 远程 sshd 得出结论,既然人家真的有该专用密钥,就应当让人家登录。因此,我们有匹配的专用密钥这一事实授权我们访问远程服务器 。
制作公钥和私钥
root@jadeshow ~]# ssh-keygen -t dsa    

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa):    

Enter passphrase (empty for no passphrase):    

Enter same passphrase again:    

Your identification has been saved in /root/.ssh/id_dsa.

Your public key has been saved in /root/.ssh/id_dsa.pub.

The key fingerprint is:

90:cc:bc:e3:99:28:95:60:89:22:c5:07:be:51:32:c5 root@jadeshow.com

[root@jadeshow ~]# ifconfig    

eth0            Link encap:Ethernet    HWaddr 00:0C:29:4B:9F:D3    

                    inet addr:192.168.1.107    Bcast:255.255.255.255    Mask:255.255.255.0

                    inet6 addr: fe80::20c:29ff:fe4b:9fd3/64 Scope:Link

                    UP BROADCAST RUNNING MULTICAST    MTU:1500    Metric:1

                    RX packets:582 errors:0 dropped:0 overruns:0 frame:0

                    TX packets:311 errors:0 dropped:0 overruns:0 carrier:0

                    collisions:0 txqueuelen:1000    

                    RX bytes:65280 (63.7 KiB)    TX bytes:40116 (39.1 KiB)

                    Interrupt:59 Base address:0x2000    
拷贝公钥到目标服务器,
目标服务器基本信息:
 
[root@web ~]# ip a|grep eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

inet 192.168.1.106/24 brd 255.255.255.255 scope global eth0

[root@web~]#scp root@192.168.1.107:/root/.ssh/id_dsa.pub /root/.ssh/authorized_keys

id_dsa.pub                                                                        100%    607         0.6KB/s     00:00        

[root@web ~]# ls ~/.ssh/

authorized_keys    id_rsa    known_hosts

切换到源服务器,验证免登录设置是否成功。
[root@jadeshow ~]# ssh 192.168.1.106    

Last login: Sun Jun 20 22:30:54 2010 from jadeshow

[root@jadeshow ~]# ssh 192.168.1.106

Last login: Sun Jun 20 22:31:29 2010 from jadeshow

[root@web ~]# ifconfig    

eth0            Link encap:Ethernet    HWaddr 00:0C:29:00:F0:ED    

                    inet addr:192.168.1.106    Bcast:255.255.255.255    Mask:255.255.255.0
此处免验证登录成功,表现形式为不需要输入密码。我们在看下需要输入密码登录的。
[root@web ~]# ssh 192.168.1.107        

root@192.168.1.107's password:     此处需要输入密码

Last login: Sun Jun 20 22:34:37 2010 from 192.168.1.106

[root@jadeshow ~]#
此外还可以通过修改open-ssh server的配置文件指定特定端口 短线时常 等等,可通过查看man sshd_config来确定。

配置rsync

rsync的用法是 rsync [选项]  源 目标 
假设我要把主机名为jadeshow下root的家目录同步到主机名为web的家目录下的backup目录。
root@jadeshow .ssh]# rsync -av    ~/ -e ssh 192.168.1.106:~/backup

#-v 详细输出模式 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性    -e 调用 ssh

building file list ... done

./

.bash_history

.bash_logout

.bash_profile

.bashrc

.cshrc

.tcshrc

.viminfo

anaconda-ks.cfg

install.log

install.log.syslog

.gconf/

.gconf/apps/

.gconf/apps/%gconf.xml

.gconf/apps/gnome-session/

.gconf/apps/gnome-session/%gconf.xml

.gconf/apps/gnome-session/options/

.gconf/apps/gnome-session/options/%gconf.xml

.gconfd/

.gconfd/saved_state

.ssh/

.ssh/id_dsa

.ssh/id_dsa.pub

.ssh/id_rsa

.ssh/known_hosts

backup/

python/

python/fulijisuanqi.py

python/python.py

sent 35361 bytes    received 514 bytes    23916.67 bytes/sec

total size is 33739    speedup is 0.94

人工对比源和目标的文件数目
[root@jadeshow ~]# ls

anaconda-ks.cfg    backup    install.log    install.log.syslog    python

[root@web ~]# ls backup/

anaconda-ks.cfg    backup    install.log    install.log.syslog    python

总结

本次的的文已经到这里就结束了,不过一般在生产环境中 备份的文件一般会被按时间顺序打成包,并且利用脚本和crontab定时任务来实现特定文件的定时备份。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: