自同步 局域网文件同步

自同步是一款小巧实用的局域网文件同步工具,具有使用方便、同步快速的特点,在局域网内,它可以让你在任意两台电脑(手机)的两个目录之间建立同步,你在一个目录中添加/修改的文件,在另一个目录中也会相应的添加/修改。

基本介绍

1、 无需再用 U盘、QQ、邮件传输文件;
2、 windows 用户可以抛弃文件夹共享、winScp;
3、 linux 用户可以抛弃scp、samba、rsync;
4、 mac用户不用设置“文件共享”;
5、 Android 和 IOS的图片能便捷同步(备份)到你的电脑上了。

使用方法

下面例子是教你如何在两台 windows 电脑(zisync-window1与 zisync-window2)之间建立同步,如何让 zisync-window1桌面上的目录 A与 zisync-window2桌面上的目录B建立同步关系。
Step1:启动”自同步”程序,设置同步口令(token),自同步会自动发现局域网内有相同同步口令的设备,如图:

输入您的同步口令(我们在此输入同步口令 zisync),点击完成,发现另外一台同步口令为zisync的设备(zisync-window2),其中 zisync-window1为当前设备,如图:

Step 2:建立设备间的互相信任, 鼠标右键点击设备 zisync-window2,点击【添加信任】,向 zisync-window2 发送请求信任的请求,如图,

然后在 zisync-window2 设备上同意信任该设备,完成后,可以看到与 zisync-window2已经建立了信任,如图:

Step 3:建立同步目录。点击选项页上的【同步目录】 ,可以看到当前没有已建立的同步关系,所以我们点击左下角的【添加】按钮来建立同步目录,如图:

选择【使用已有的同步目录】,然后点击下一步,会出现让您选择其它设备的同步目录界面,如图:

当前在zisync-window2上没有看到已存在的同步目录,所以我们点击【创建同步目录】,选择“桌面/B”来为 zisync-window2 创建新的同步目录,点击完成后,我们可以看到zisync-window2多了一个同步目录的信息,如图:

注:这里也可以为本机创建同步目录,这样不仅可以在两台设备的目录之间建立同步关系,也可以在一台设备的目录之间建立同步关系。
点击【下一步】去选择本地的目录,如图:

选择与建立同步关系的本地目录,在该教程中,我们选择“G:/zisync” ,点击【完成】后,这样我们就完成了在两个设备目录之间建立同步关系的操作。
Step 4:在自同步主界面上【同步目录】可以看到你刚刚建立同步关系,如图:

 

下载地址:

官网下载

MySQL常用备份方法

mysql按照备份恢复方式分为逻辑备份和物理备份。逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现,物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单。

这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小

下面介绍以下3种常用的备案方法

一、mysqldump工具备份

mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具。支持基于InnoDB的热备份。但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景。
mysqldump完全备份+二进制日志 —>实现时间点恢复

温备:

在使用MyISAM引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁

这时候可以进入数据库手动加读锁。这样比较麻烦,在mysqldump工具中直接有一个加锁的选项

[codesyntax lang=”sql”]
mysqldump –databases mydatabase –lock-all-tables –flush-logs> /tmp/backup-`date +%F-%H-%M`.sql
[/codesyntax]

如果是针对某张表备份,只要在数据库名称后面加上表名称就行了

这里注意,要实现时间点的恢复,加上–flush-logs选项,在使用备份文件恢复后,然后再基于二进制日志进行时间点的恢复

时间点的恢复方法

[codesyntax lang=”sql”]
mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql
[/codesyntax]

然后用mysql命令导入这个sql脚本就行了

热备:如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:–single-transaction

[codesyntax lang=”sql”]
mysqldump –databases mydb –single-transaction –flush-logs –master-data=2 > /tmp/backup-`date +%F-%H-%M`.sql”
[/codesyntax]

注意:
恢复的时刻关闭二进制日志
mysql>set sql_log_bin=0;
因为这是基于逻辑备份方式,在恢复日志时会执行sql语句插入数据,而恢复时候插入数据的日志没有意义。

二、基于LVM快照备份

在物理备份中 ,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令打包。但这些只能进行冷备份
不同的存储引擎能备份的级别也不一样,MyISAM能备份到表级别,而InnoDB不开启每表一文件的话就只能备份整个数据库。

下面就介绍下使用LVM的快照功能进行备份:

1. 为了安全 在数据库上施加读锁

[codesyntax lang=”sql”]
mysql>FLUSH TABLES WITH READ LOCK;
[/codesyntax]

2. 刷新一下二进制日志,便于做时间点恢复

[codesyntax lang=”sql”]
mysql>FLUSH LOGS;
[/codesyntax]

3. 创建快照卷

[codesyntax lang=”sql”]
lvcreate –L 1G –s –n data-snap –p –r /dev/myvg/mydata
[/codesyntax]

4. 进入数据库释放读锁

[codesyntax lang=”sql”]
UNLOCK TABLES;
[/codesyntax]

5. 挂载快照卷进行备份

[codesyntax lang=”sql”]
mount –r /dev/myvg/data-snap /mnt/snap
[/codesyntax]

6. 对/mnt/snap下的文件进行打包备份
还原的时候,关闭mysqld,然后备份二进制日志后将原来备份的文件还原进去,然后通过二进制日志还原到出错的时间点(通过二进制还原时间点的时候不要忘了暂时关闭二进制日志)

三、使用percona提供的xtrabackup(推荐)

支持InnoDB的物理热备份,支持完全备份,增量备份,而且速度非常快,而且支持InnoDB引擎的数据在不同数据库迁移
为了让xtrabackup支持更多的功能扩展,配置InnoDB每表一个文件的功能
在my.cnf的mysqld中加入此项: innodb_file_per_table=1
此项不启用将不支持备份单独的表
但如果之前没有启用这个选项,要实现单表一文件的话,可以用mysqldump导出数据,然后启用该选项,恢复回去后就是单表一文件了

首先下载xtrabackup,下载地址:http://www.percona.com/software/percona-xtrabackup,可以直接下载rpm包安装即可。

xtrabackup有完全备份,增量备份和部分备份(前面开启innodb每表一文件,就是为了此功能)

1.完全备份整个数据库

[codesyntax lang=”sql”]
innobackupex –user=root –password=123456 /tmp/backup
[/codesyntax]

此时会在/tmp/backup目录下生成以时间为名的文件夹,里面是备份文件

在这里,备份的数据还不能直接用来还原。因为备份数据中会含有尚未提交的事务或者未同步到数据文件中的事物。这里需要用prepare回滚事物使数据文件处于一致性。

[codesyntax lang=”bash”]
innobackupex –apply-log /tmp/backup/dir
[/codesyntax]

处理完成后才能用来还原数据,用此命令还原

[codesyntax lang=”bash”]
innobackupex –copy-back /tmp/backup/dir
[/codesyntax]

要实现时间点还原,还是需要使用二进制日志

2.增量备份

增量备份支持Innodb,对于MyISAM只能完全备份

[codesyntax lang=”bash”]
innobackupex –incremental /tmp/backup/incremental –incremental-basedir=/tmp/backup/dir
[/codesyntax]

在进行一次增量备份–incremental-basedir要指向上一次增量备份的目录

如果要进行还原,先进行prepare处理

这里处理的方式,将备份合并

[codesyntax lang=”bash”]
innobackupex –apply-log –redo-only /tmp/backup/dir
innobackupex –apply-log –redo-only /tmp/backup/dir –incremental-dir=/tmp/backup/incremental
[/codesyntax]

3. 使用全备份还原

至于差异备份,只要每次将basedir指向完全备份文件夹就行了

最后再废话一句:要实现时间点还原,是需要使用二进制日志的,所以备份好二进制日志至关重要。除非在恢复时间点和上一次备份时间点这段时间的数据对你来说无所谓。

本文参考至: 威易网

网络流量捕捉:Wireshark

Wireshark简介

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。网络封包分析软件的功能可想像成 “电工技师使用电表来量测电流、电压、电阻” 的工作 – 只是将场景移植到网络上,并将电线替换成网络线。
网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识当然,有的人也会“居心叵测”的用它来寻找一些敏感信息。
Wireshark不是入侵侦测软件(Intrusion DetectionSoftware,IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。
Linux网络流量分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的最底层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。
在Linux系统中,1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包过滤器的一种的实现,BPF(BSD Packet Filter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进。在window系统中,意大利人Fulvio Risso和Loris Degioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows系统提供一个功能强大的开发式数据包捕获平台,希望在Linux系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常现实的。就实现来说提供的函数调用接口也是一致的。Ethereal网络分析系统也需要一个底层的抓包平台,在Linux中是采用Libpcap函数库抓包,在windows系统中采用winpcap函数库抓包。

层次化的数据包协议分析方法

取得捕包函数捕回的数据包后就需要进行协议分析和协议还原工作了。由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议分析需要从下至上进行。首先对网络层的协议识别后进行组包还原然后脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层。由于网络协议种类很多,就Ethereal所识别的500多种协议来说,为了使协议和协议间层次关系明显。从而对数据流里的各个层次的协议能够逐层处理。Ethereal系统采用了协议树的方式。
如果协议A的所有数据都是封装在协议B里的,那么这个协议A就是协议B是另外一个协议的儿子节点(比如图中的TCP和UDP协议就是IP协议的儿子节点)。我们将最低层的无结构数据流作为根接点。那么具有相同父节点的协议成为兄弟节点。那么这些拥有同样父协议兄弟节点协议如何互相区分了?Ethereal系统采用协议的特征字来识别。每个协议会注册自己的特征字。这些特征字给自己的子节点协议提供可以互相区分开来的标识。比如tcp协议的port字段注册后。Tcp.port=21就可以认为是ftp协议,特征字可以是协议规范定义的任何一个字段。比如ip协议就可以定义proto字段为一个特征字。
在Ethereal中注册一个协议解析器首先要指出它的父协议是什么。另外还要指出自己区别于父节点下的兄弟接点协议的特征。比如ftp协议。在Ethereal中他的父接点是tcp协议,它的特征就是tcp协议的port字段为21。这样当一个端口为21的tcp数据流来到时。首先由tcp协议注册的解析模块处理,处理完之后通过查找协议树找到自己协议下面的子协议,判断应该由那个子协议来执行,找到正确的子协议后,就转交给ftp注册的解析模块处理。这样由根节点开始一层层解析下去。
由于采用了协议树加特征字的设计,这个系统在协议解析上由了很强的扩展性,增加一个协议解析器只需要将解析函数挂到协议树的相应节点上即可。

基于插件技术的协议分析器

所谓插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且,在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用程序。它着名的应用实例有:媒体播放器winamp、微软的网络浏览器IE等。
由于现在网络协议种类繁多,为了可以随时增加新的协议分析器,一般的协议分析器都采用插件技术,这样如果需要对一个新的协议分析只需要开发编写这个协议分析器并调用注册函数在系统注册就可以使用了。通过增加插件使程序有很强的可扩展性,各个功能模块内聚。

安装Wireshark

该软件有极其方便和友好的图形用户界面,并且能够使得用户通过图形界面的配置和选择,针对多块网卡、多个协议进行显示,效果非常好。目前最新版本为:Wireshark 1.0.3。安装该软件请按照如下步骤进行:
1. 将下载的最新版本软件拷贝到临时文件夹
[codesyntax lang=”bash”]

cp wireshark-1.0.3.tar.gz /usr/local/src/

[/codesyntax]
2. 切换到临时文件夹目录
[codesyntax lang=”bash”]

cd /usr/local/src/

[/codesyntax]
3. 解压缩文件
[codesyntax lang=”bash”]

tar -xvf wireshark-1.0.3.tar.gz

[/codesyntax]
另外,同Tcpdump一样,在编译Ethereal之前应先确定已经安装pcap库(libpcap),这是编译Wireshark时所必需的。如果该库已经安装,就可以执行下面的命令来编译并安装Wireshark:
[codesyntax lang=”bash”]

cd wireshark-1.0.3
 ./configure
 make
 make install

[/codesyntax]
当编译并安装好Wireshark后,就可以执行“wireshark”命令来启动Wireshark

Linux查看系统信息

查看主板的序列号:
[codesyntax lang=”bash”]

dmidecode | grep -i ’serial number’

[/codesyntax]

用硬件检测程序kuduz探测新硬件:
[codesyntax lang=”bash”]

service kudzu start ( or restart)

[/codesyntax]

查看CPU信息:
[codesyntax lang=”bash”]

cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]

[/codesyntax]

查看内存信息:
[codesyntax lang=”bash”]

cat /proc/meminfo [free -m][vmstat]

[/codesyntax]

查看板卡信息:
[codesyntax lang=”bash”]

cat /proc/pci

[/codesyntax]

查看显卡/声卡信息:
[codesyntax lang=”bash”]

lspci |grep -i ‘VGA’[dmesg | grep -i 'VGA']

[/codesyntax]

查看网卡信息:
[codesyntax lang=”bash”]

dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']

[/codesyntax]

查看PCI信息:
[codesyntax lang=”bash”]

lspci (相比cat /proc/pci更直观)

[/codesyntax]

查看USB设备:
[codesyntax lang=”bash”]

cat /proc/bus/usb/devices

[/codesyntax]

查看键盘和鼠标:cat /proc/bus/input/devices
[/codesyntax]

查看系统硬盘信息和使用情况:
[codesyntax lang=”bash”]

fdisk & disk – l & df

[/codesyntax]

查看各设备的中断请求(IRQ):cat /proc/interrupts
[/codesyntax]

查看系统体系结构:
[codesyntax lang=”bash”]

uname -a

[/codesyntax]

查看及启动系统的32位或64位内核模式:
[codesyntax lang=”bash”]

isalist –v [isainfo –v][isainfo –b]

[/codesyntax]

dmidecode查看硬件信息,包括bios、cpu、内存等信息

测定当前的显示器刷新频率:
[codesyntax lang=”bash”]

/usr/sbin/ffbconfig –rev /?

[/codesyntax]

查看系统配置:
[codesyntax lang=”bash”]

/usr/platform/sun4u/sbin/prtdiag –v

[/codesyntax]

查看当前系统中已经应用的补丁:
[codesyntax lang=”bash”]

showrev –p

[/codesyntax]

显示当前的运行级别:
[codesyntax lang=”bash”]

who –rH

[/codesyntax]

查看当前的bind版本信息:
[codesyntax lang=”bash”]

nslookup –class=chaos –q=txt version.bind

[/codesyntax]

查看硬件信息:
[codesyntax lang=”bash”]

dmesg | more 

[/codesyntax]

显示外设信息, 如usb,网卡等信息:
[codesyntax lang=”bash”]

lspci 

[/codesyntax]

查看已加载的驱动:
[codesyntax lang=”bash”]

lsnod 

[/codesyntax]

查看当前处理器的类型和速度(主频):
[codesyntax lang=”bash”]

lshw
psrinfo -v 

[/codesyntax]

打印当前的OBP版本号:
[codesyntax lang=”bash”]

prtconf -v 

[/codesyntax]

查看硬盘物理信息(vendor, RPM, Capacity):
[codesyntax lang=”bash”]

iostat –E 

[/codesyntax]

查看磁盘的几何参数和分区信息:
[codesyntax lang=”bash”]

prtvtoc /dev/rdsk/c0t0d0s 

[/codesyntax]

显示已经使用和未使用的i-node数目:
[codesyntax lang=”bash”]

df –F ufs –o i 

[/codesyntax]

[codesyntax lang=”bash”]

isalist –v

[/codesyntax]

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

Cpuinfo 主机CPU信息
Dma 主机DMA通道信息
Filesystems 文件系统信息
Interrupts 主机中断信息
Ioprots 主机I/O端口号信息
Meninfo 主机内存信息
Version Linux内存版本信息

备注:
proc – process information pseudo-filesystem 进程信息伪装文件系统

几种常用数据库比较

目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有Oracle、Sybase、INFORMIX和INGRES。这些产品都支持多平台,如 UNIX、VMS、Windows,但支持的程度不一样。IBM的DB2也是成熟的关系型数据库。但是,DB2是内嵌于IBM的AS/400系列机中,只支持OS/400操作系统。

  1.MySQL

MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。
与其他数据库管理系统相比,MySQL具有以下优势:

  (1)MySQL是一个关系数据库管理系统。
(2)MySQL是开源的。
(3)MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器。
(4)MySQL服务器工作在客户/服务器或嵌入系统中。
(5)有大量的MySQL软件可以使用。

  2.SQL Server

SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。
目前最新版本是SQL Server 2005,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。

  3.Oracle

提起数据库,第一个想到的公司,一般都会是Oracle(甲骨文)。该公司成立于1977年,最初是一家专门开发数据库的公司。Oracle在数据库领域一直处于领先地位。 1984年,首先将关系数据库转到了桌面计算机上。然后,Oracle5率先推出了分布式数据库、客户/服务器结构等崭新的概念。Oracle 6首创行锁定模式以及对称多处理计算机的支持……最新的Oracle 8主要增加了对象技术,成为关系—对象数据库系统。目前,Oracle产品覆盖了大、中、小型机等几十种机型,Oracle数据库成为世界上使用最广泛的关系数据系统之一。
Oracle数据库产品具有以下优良特性。
(1)兼容性
Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与IBM SQL/DS、DB2、INGRES、IDMS/R等兼容。
(2)可移植性
Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上不同的大、中、小型机上;可在VMS、DOS、UNIX、Windows等多种操作系统下工作。
(3)可联结性
Oracle能与多种通讯网络相连,支持各种协议(TCP/IP、DECnet、LU6.2等)。
(4)高生产率
Oracle产品提供了多种开发工具,能极大地方便用户进行进一步的开发。
(5)开放性
Oracle良好的兼容性、可移植性、可连接性和高生产率使Oracle RDBMS具有良好的开放性。

  4.Sybase

1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。Sybase主要有三种版本:一是UNIX操作系统下运行的版本; 二是Novell Netware环境下运行的版本;三是Windows NT环境下运行的版本。对UNIX操作系统,目前应用最广泛的是SYBASE 10及SYABSE 11 for SCO UNIX。
Sybase数据库的特点:

  (1)它是基于客户/服务器体系结构的数据库。
(2)它是真正开放的数据库。
(3)它是一种高性能的数据库。

  5.DB2

DB2是内嵌于IBM的AS/400系统上的数据库管理系统,直接由硬件支持。它支持标准的SQL语言,具有与异种数据库相连的GATEWAY。因此它具有速度快、可靠性好的优点。但是,只有硬件平台选择了IBM的AS/400,才能选择使用DB2数据库管理系统。
DB2能在所有主流平台上运行(包括Windows),最适于海量数据。
DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上都用DB2数据库服务器,而国内到1997年约占5%。
除此之外,还有微软的 Access数据库、FoxPro数据库等。既然现在有这么多的数据库系统,那么在游戏编程时应该选择什么样的数据库呢?首要的原则就是根据实际需要,另一方面还要考虑游戏开发预算。现在常用的数据库有:SQL Server、My SQL、Oracle、FoxPro。其中MySQL是一个完全免费的数据库系统,其功能也具备了标准数据库的功能,因此,在独立制作时,建议使用。 Oracle虽然功能强劲,但它毕竟是为商业用途而存在的,目前很少在游戏中使用到。