数据分发还是同步
最近需要将一些文件从一台server备份到另一台server上(刷新新的数据到正式机上)
是根据刷新操作触发自动同步? 还是主动推(分发)过去?
想了想,觉得比较合理的解决还是看需要备份的数据量,如果是大规模的文件,为了提高效率,还是主动一点吧,推过去。 小批量文件,则还是可以被动同步。
用哪种方式
1、scp/sftp(SHH2)
可以使用
http://www.ganymed.ethz.ch/ssh2/提供的jar包中的API,可以调用其接口进行基于SSH的连接,实现执行远程命令
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SFTPv3Client;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class SCPTest {
public static void main(String[] args)
{
String user = "root";
String pass = "*****";
String host = "remoteIP";
Connection con = new Connection(host);
try {
con.connect();
boolean isAuthed = con.authenticateWithPassword(user, pass);
System.out.println("isAuthed===="+isAuthed);
SCPClient scpClient = con.createSCPClient();
scpClient.put("localFiles", "remoteDirectory"); //从本地复制文件到远程目录
scpClient.get("remoteFiles","localDirectory"); //从远程获取文件
SFTPv3Client sftpClient = new SFTPv3Client(con);
sftpClient.mkdir("newRemoteDir", 6); //远程新建目录
sftpClient.rmdir(""); //远程删除目录
sftpClient.createFile("newRemoteFile"); //远程新建文件
sftpClient.openFileRW("remoteFile"); //远程打开文件,可进行读写
Session session = con.openSession();
session.execCommand("uname -a && date && uptime && who"); //远程执行命令
//显示执行命令后的信息
System.out.println("Here is some information about the remote host:");
InputStream stdout = new StreamGobbler(session.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
/* Show exit status, if available (otherwise "null") */
System.out.println("ExitCode: " + session.getExitStatus());
session.close();
con.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2、rsync
rsync是linux自带的备份文件/目录的软件,使用时需要配置一下需要同步的目录/认证之类的属性(/etc/rsyncd.conf),网上有太多的配置说明,就不多说了,但要找到一种适合自己应用且效率比较高的配置还是不容易。
3、sersync
sersync主要用于服务器同步,web镜像等功能。基于boost1.41.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是: sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件重新同步。
本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
本项目socket与http插件扩展,满足您二次开发的需要。
安装和配置也见
http://code.google.com/p/sersync/
上面是其简介和特点,其配置是基于rsync的,配置sersync之前需要启动rsync的守护进程,然后配置confxml.xml文件,类似于rsync的/etc/rsyncd.conf,主要是配置目的server的地址、目录以及本地目录。
我们可以根据情况选择方式1进行主动分发,或者选择方式2或3进行同步。
数据分发/同步
分享到:
相关推荐
14.6 分发还是同步 14.7 反向代理 第15章 分布式文件系统 15.1 文件系统 15.2 存储节点和追踪器 15.3 MogileFS 第16章 数据库扩展 16.1 复制和分离 16.2 垂直分区 16.3 水平分区 第17章 分布式计算 17.1 ...
14.6 分发还是同步 14.7 反向代理 第15章 分布式文件系统 15.1 文件系统 15.2 存储节点和追踪器 15.3 MogileFS 第16章 数据库扩展 16.1 复制和分离 16.2 垂直分区 16.3 水平分区 第17章 分布式计算 17.1...
14.6 分发还是同步 14.7 反向代理 第15章 分布式文件系统 15.1 文件系统 15.2 存储节点和追踪器 15.3 MogileFS 第16章 数据库扩展 16.1 复制和分离 16.2 垂直分区 16.3 水平分区 第17章 分布式计算 17.1...
SQL Server 2005的订阅复制同步功能是一种强大的数据分发机制,它允许数据从一个或多个发布服务器分发到多个订阅服务器,以实现数据的实时或定期更新,确保多台服务器间的数据一致性。在本实例中,我们将探讨如何...
SQL数据同步(独立分发服务器),讲解如何建立SQL2005的分发服务器
2. **配置分发服务器**:在SQL Server 2008上,通过图形化界面进行分发服务器的配置,包括指定分发数据库、登录凭证等信息。具体步骤略。 ##### 发布服务器配置 1. **新建发布**:在SQL Server 2000上,选择新建...
根据给定文件的信息,我们可以提炼出关于数据同步技术在SQL Server 2000中的应用与实现的关键知识点。 ### 数据库同步技术概述 数据库同步技术是确保不同数据库之间数据一致性的关键技术之一。对于企业级应用而言...
通过单例,我们可以确保在整个程序运行过程中,摄像头只会被初始化一次,减少了资源消耗和潜在的同步问题。 封装成类是面向对象编程中的重要概念,它将数据和操作这些数据的方法打包在一起。对于OpenCV摄像头数据...
1.读取本地文件列表快速复制分发到多台远程服务器上(并行发布) 2.可视化管理系统分发配置 3.可全量或部分备份远程服务器文件列表 4.可还原指定远程服务器到任意已备份的系统版本 5.可停止,重启远程IIS站点及...
### GoldenGate 实时同步 DB 变更数据到 ActiveMQ JMS 队列 #### 一、GoldenGate与ActiveMQ集成概述 GoldenGate是一款由Oracle提供的高性能、低资源消耗的数据复制软件,它支持多种数据库系统之间的数据同步。而...
在SQL Server中,设置分发和订阅服务器是实现数据库复制的关键步骤,这允许数据在不同服务器之间进行同步和分发。以下是一个详细的步骤指南,解释如何在MSSQL环境中配置分发和订阅服务器: 首先,确保系统有一个...
本资料主要探讨了一种基于内容分发网络(CDN)的同步文件访问方法和系统,旨在优化网络游戏中的文件访问性能,减少延迟,提高用户体验。以下是对这个主题的详细解释。 内容分发网络是一种分布式网络服务,它通过...
这在大型网络环境、内容分发网络(CDN)以及需要跨地域共享信息的场景中非常常见。 描述中的"不错的软件 可以同步多个网站的数据信息 网页内容相当实用"暗示了存在一款工具或应用,它能够有效地将数据从一个源网站...
本文将详细介绍Oracle提供的主要数据分发技术——exp/imp 导入导出技术、物化视图和Streams数据同步,并探讨其在实际应用中的优势、局限和最佳使用场景。 首先,让我们看看exp/imp 导入导出技术。这是Oracle提供的...
无论是选择快照复制、事务复制还是合并复制,都能根据实际应用场景的需求灵活配置。此外,通过手动同步方案,也能满足特殊场景下的需求。数据同步不仅提高了数据的一致性和可用性,也为企业的决策支持提供了坚实的...
利用 360 安全卫士、FTP 和 wget 搭建局域网内 windows 系统补丁自动更新分发平台 本资源摘要信息旨在介绍如何利用 360 安全卫士、FTP 和 wget 搭建局域网内 windows 系统补丁自动更新分发平台。该平台的实现原理是...
# 基于ASP.NET的文件同步分发系统 ## 项目简介 本项目是一个基于ASP.NET框架的文件同步分发系统,旨在支持多人、多站点同时进行文件上传操作,并确保文件上传的事务性,即要么全部成功,要么全部失败。系统通过FTP...
基于内容分发网络(Content Delivery Network,简称CDN)的数据同步方法是现代网络游戏优化网络性能的重要手段。本文将详细探讨这一技术及其在客户端和服务器中的应用。 一、内容分发网络(CDN)基础 CDN是一种...
通过安装在宿主机上的驱动程序,它可以捕获用户的键盘和鼠标事件,并将这些事件分发到所有开启的虚拟机中。同时,它可能还包含一些优化机制,比如根据虚拟机的状态(是否激活)来决定是否发送事件,以避免无效操作。...