摘 要 通过Java的Socket编程,用dom4j解析XML配置文件方式,实现了将本地指定的目录或单个数据文件定时自动备份到异地机上,实现了跨平台的数据自动备份;通过桥接设计模式的使用有效地保证了本系统的可扩充性。
关键词 Java;Socket; dom4j; XML; xpath; 多线程; 设计模式
1 前言
当前计算机的应用越来越普及,一个单位的计算机业务系统正不断增长,为保证系统的安全运行,不发生数据丢失,管理员必须经常进行数据的手动备份工作,有的系统需备份的目录包含较深的子目录,有的系统备份数据量较大,备份过程繁琐,耗时较长,有时一台机器有多个应用系统需要备份,同时有的系统不能在白天工作时间进行备份工作,而且应用系统的操作系统各不相同,因此,有必要实现系统的异机跨平台的定时自动备份工作,一般的做法是启用几台有大数据容量的计算机作为备份机,这样就存在一台客户机有多个应用系统数据向多台备份机传送备份数据,一台备份机可能接收多个不同操作系统的业务备份数据。为此选择跨平台的编程语言Java,用多线程方式开发基于TCP/IP协议的套接字(Socket )网络连接程序,使用ServerSocket和Socket实现TCP/IP客户端和服务器,同时为应对备份策略的多变性,将所有系统参数写入XML文件,用dom4j进行解析,当需求变化时,只需通过更改配置文件进行定制,为适应将来备份策略的扩充,程序使用设计模式进行了优化设计,从而灵活实现了数据的异地定时自动备份工作。
2 系统概述
2.1工作过程
启动客户端和服务器端的进程,客户端和服务器分别用dom4j的SAX解析器将配置文件读入内存,并结合XPATH语言对配置文件进行解析,客户端获取需要传送的本地目录和本地文件及传送时间以及上传的服务器IP地址及端口号,并与当前机器时间进行比较,如果时间匹配,则试图与服务器建立Socket连接,连接成功后,创建处理线程进行数据传送。服务器端进程运行后,用dom4j读入配置文件并进行解析,获取两个SevrverSocket端口号,一个用于客户端与服务器端之间的命令传送,一个用于数据传送。当与客户端建立一个Socket连接后, 创建一个线程进行任务处理,根据客户端传送的标识,获取服务器端对应的接收目录,并将客户数据接收到接收目录。其中客户端通过命令Socket用于传送一系列命令来通知服务端采取相应的操作,如start:通知传送的是根目录;dir:通知传送的是根目录下的子目录;file:通知传送的是目录下的文件;singlefile:通知传送的是单个文件;quit:通知传输结束。当为file或singlefile时,服务器用accept()打开数据传输套接字与客户端建立连接,通过文件输入输出流将文件数据上传到服务器端。
|