两台服务器同步,服务器上传的图片、文件等要实现实时同步(延时一两分钟没问题),怎么实现? 顶贴又分,不够了再加
刚才那个20的发错了,不好意思
刚才那个20的发错了,不好意思
解决方案 »
- arraylist和vector有啥区别
- scaledImg = (BufferedImage)tt.getScaledInstance(width, height,Image.SCALE_FAST); 返回值说不相配,这是怎么回事?
- 请问怎样将一个浮点数反序输出?
- 正则式的又一个问题
- 怎么创建一个随系统一起启动的线程
- 各位大侠们:关于如何将java开发的程序整合成可执行文件,谢谢了!!!
- 求救!!!struts的datasource的问题,弄了一天了
- java程序与网页交互??
- 请问那位知道用Socket传输文件?
- 100分急求win2000server+jrun4+mysql3.23 的合理中文解决方案
- java 中的多线程,到底是怎么一回事啊?谢谢。
- 如何生存不同随机数??
应该就OK了
scp localfile username@tohostname:/newfilename
scp username@tohostname:/remotefile /newlocalfile这样,我们就可以在Client上面,依次执行命令:
scp /usr/local/program/index.jsp root@ServerA:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerB:/usr/local/program/index.jsp
...
这里,不爽的地方是,每次使用scp命令,都会让你输入对方服务器对应用户的口令。这样,这些机械
化的动作就不能通过shell来自动的完成,那么配置服务器直接互相信任,既可以解决此问题:
配置的方法是(下面是一次完整的操作记录):[root@Client root]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
51:ba:6d:5a:61:52:1d:79:e2:4f:0e:93:d0:72:02:fe root@Client
[root@Client root]#
[root@Client root]# scp /root/.ssh/id_rsa.pub ServerA:/root/.ssh/authorized_keys
The authenticity of host '210.192.125.55 (210.192.125.55)' can't be established.
RSA key fingerprint is e9:8e:f3:59:80:08:e7:9b:b8:d8:fb:0e:79:8a:d2:4f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '210.192.125.55' (RSA) to the list of known hosts.
[email protected]'s password:
id_rsa.pub 100% |************************************************| 223 00:00
[root@Client root]#
[root@Client root]# ssh ServerA
Last login: Mon Jul 25 16:55:28 2005 from Client
[root@ServerA root]# 在你的实际操作中,将Client,ServerA换成你实际的IP或者主机地址。这样,再运行对ServerA的ssh或者scp的时候,ServerA都不会让你输入密码了。(具体的原理这里就不说了,参看问后的参考文章)这样,在对所有的服务器都做了这个操作之后,我们就可以偷懒了,在Client上面编写一个Shell就可以通过这个简单的Shell来同步所有的服务器了。[root@Client root]# vi sync.sh
#/bin/sh
scp /usr/local/program/index.jsp root@ServerA:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerB:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerC:/usr/local/program/index.jsp保存
[root@Client root]# chmod +x sync.sh
[root@Client root]#./sync.sh敲入上面的字符后,你就可以出去溜达一下,等着回来看同步结果了。三、使用sftp。有的时候,要同步一个文件就可以了,而有的时候,需要同步一大堆的文件,这样使用scp就有点不那么方便了,这时候
使用sftp, sftp提供这样的语法:
sftp username@tohostname使用sftp登录到Server上面之后,就可以通过put、get、cd、lcd等命令了。例如要同步下面这些文件:
[root@Client root]#sftp ServerA
Last login: Mon Jul 25 17:23:31 2005 from Client
[root@ServerA root]#cd /usr/local/program/
[root@ServerA root]#lcd /usr/local/program/
[root@ServerA root]#put *.jsp
....这里是一砣上传记录
[root@ServerA root]#cd /usr/local/program/conf/
[root@ServerA root]#lcd /usr/local/program/conf/
[root@ServerA root]#put server.conf
....这里是一砣上传记录
....然后,你可以做一大堆的操作,sftp可以通过将命令实现写好,放到一个文件里面,像批处理(DOS时代学会的觉得比较高级的玩意儿)的那样执行。
[root@ServerA root]#vi sftp_comms.txt
cd /usr/local/program/
lcd /usr/local/program/
put *.jsp
cd /usr/local/program/conf/
lcd /usr/local/program/conf/
put server.confexit保存
[root@ServerA root]#sftp -b sftp_comms.txt ServerA这时候,如果你没有做(二)中提到的设置两台Server互相信任的操作,这里将会提示你输入ServerA的root密码,否则,这里也是不需要输入密码的。
利用sftp,也可以编写一个Shell:
[root@Client root]# vi sftp_sync.sh
#/bin/sh
sftp -b sftp_comms.txt ServerA
sftp -b sftp_comms.txt ServerB
sftp -b sftp_comms.txt ServerC保存
[root@Client root]# chmod +x sftp_sync.sh
[root@Client root]#./sftp_sync.sh敲入上面的字符后,你又可以出去溜达一下,等着回来看同步结果了。:)。这样做还有一个好处是所有的同步的细节都写在 sftp_comms.txt里面,每次同步不同的东西,只要修改这个文件就可以了,当然,用scp的方法,你也可以用参数将需要同步的文件名传进shell里面,不过这样做略显复杂。如果喜欢挑战的话,你可以试一下。参考文章:
1.http://www.linuxforum.net/doc/ossh-wu.html
2.http://www.linuxforum.net/docnew/showthreaded.php?Cat=&Board=sys&Number=99
3.http://www.douzhe.com/docs/linux/RHEL3_U2/rhel-sag-zh_cn-3/s1-openssh-client-config.html
服务器上有更新就要更改版本号.(两台服务器都会存放对方的版本号, 此版本需要保存所对应的图片或者其他文件的文件名)
然后一台服务器去另一台服务器里读取版本号,如果不同的话就去拿数据.成功的话更改版本号(这样也可以防止中途断线).
然后拿数据的时候可以在后台开个线程,然后成功后提示一下就可以了.
具体传输方式的话网上有很多,或者你直接打成byte数组走http丢过去,然后再解.如果要走ftp的话可以用FileZilla等一些ftp工具.
LINUX/UNIX使用NFS服务
WINDOWS的共享就不用说了吧.
看到一个开源项目,不知道是否有用