手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表分类:苹果相关

文件同步工具Unison使用介绍

说起unison的时候是在一个月前,当时在讨论怎么在与服务器进行数据同步,开始的时候都说的rsync,也有说dropbox的,但是想着dropbox经过国外的服务器,不安全啊。。数据从别人那里走一圈,怎么安全呢?
而说rsync的,是说在同步的时候会遍历全目录,如果目录不大,还OK,太大了,可能效率不高啥的。
这时候,乔大姐提出了unison,但是没用过,所以网上找了点资料先做备份。。。
原文URL:http://www.ixdba.net/a/web/2010/0422/44.html
因此,这是纯转载喽。。

一:Unison简介

Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。unison拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点:

      跨平台使用;

      对内核和用户权限没有特别要求;

      unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;

IXDBA.NET技术社区

      只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。

Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用.


二:安装unison

unison各种版本下载地址:

http://www.seas.upenn.edu/~bcpierce/unison//download.html

unison编译器下载地址:
http://caml.inria.fr/pub/distrib/ocaml-3.10

其它有用链接:
http://worldhello.net/doc/bcp/unison.html

http://www.seas.upenn.edu/~bcpierce/unison//contrib.html

http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#rshmeth

http://linux.chinaunix.net/bbs/viewthread.php?tid=888250&extra=page%3D1%26amp%3Bfilter%3Dreward

从以上地址可以下载各种平台,各种版本的unison,有基于源码安装的,有二进制的,我下载的是二进制的,可以直接使用.这里介绍源码安装:

源码安装unison

Linux下从源码包编译安装,需要一个叫做Objective Caml compiler的工具,版本至少3.0.7,可以从这里下载:http://caml.inria.fr/

Ocaml安装脚本如下:

# tar -zxf ocaml-3.09.3.tar.gz

# cd ocaml-3.09.3

# ./configure

# make world opt

# make install

Unison对版本要求很高,进行同步的两台主机需要相同版本的unison,所以这里使用和windows一致的版本2.13.16,unison-2.13.16.tar.gz

安装脚本如下:

# tar -zxf unison-2.13.16.tar.gz

# cd unison-2.13.16

# make UISTYLE=text

# make install

之后将生成可执行文件unison,将其cp到系统PATH即可。

# cp ./unison /usr/local/bin


三:配置双机ssh信任


由于unison在远程同步文件夹要登陆远程服务器,因此要配置两机互相信任

本例假设本地机为:10.178.1.132(linux)

          远程机:10.178.1.110(solaris)

1.   在两台机器上创建 RSA密钥

以下操作要在本地机和远程机上都执行一遍

   (1)以 root 用户登录

   (2)在 root 用户的 主目录内创建.ssh 目录并设置正确的权限

   [root@gsgatzhapp1 ~]# mkdir ~/.ssh

   [root@gsgatzhapp1 ~]# chmod 700 ~/.ssh

  (3)使用 ssh-keygen 命令生成第 2 版本的 SSH 协议的 RSA 密钥

   [root@gsgatzhapp1 ~]# 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:

   17:e4:7c:79:8d:a0:00:3b:d9:f7:7a:56:f3:ac:54:4d oracle@gsgatzhapp1

   在提示保存私钥(key)和公钥(public key)的位置时,使用默认值。 如果需要私钥密码(passphrase),则输入一个私钥密码(如果使用私钥密码,使用 ssh 执行远程命令时需要输入私钥密码,因此,本案例中未使用私钥密码),因此,直接回车即可。

   2. 添加密钥到授权密钥文件(authorized key file)中

     (1)以 root 用户登录

     (2)在本地机上执行

     [root@gsgatzhapp1 ~] # cd ~/.ssh

     [root@gsgatzhapp1.ssh]#ssh 10.178.1.132 cat /root/.ssh/id_rsa.pub >> authorized_keys

     [oracle@gsgatzhapp1.ssh]#ssh 10.178.1.110 cat /root/.ssh/id_rsa.pub >> authorized_keys

     [oracle@gsgatzhapp1.ssh]#scp authorized_keys 10.178.1.110:/root/.ssh/

[oracle@gsgatzhapp1 .ssh]# chmod 600  /root/.ssh/authorized_keys

(3)在远程机10.178.1.110 上:

 bash-2.05# chmod 600  /root/.ssh/authorized_keys

    (4)测试

     完成后,在 gsgatzhapp1 上执行:

     [root@gsgatzhapp1 ~]# ssh 10.178.1.132  date

     [root@gsgatzhapp1 ~]#ssh 10.178.1.110 date

     如果不需要输入密码就出现系统日期,说明 SSH 配置成功。


四:unison的使用


Unison可以在一台主机上使用,同步两个文件夹,也可以在网络上是用。

1:本地使用

使用方法:

#unison  111 222  #同步本地的111和222文件夹

Contacting server...

Looking for changes

Warning: No archive files were found for these roots.  This can happen either

because this is the first time you have synchronized these roots,

or because you have upgraded Unison to a new version with a different

archive format. 

Update detection may take a while on this run if the replicas are

large.

Unison will assume that the 'last synchronized state' of both replicas

was completely empty.  This means that any files that are different

will be reported as conflicts, and any files that exist only on one

replica will be judged as new and propagated to the other replica.

If the two replicas are identical, then no changes will be reported.

Press return to continue.[<spc>] Reconciling changes

111          222             

         <---- file       aaaaaaaaaaaaa  [f] ?

Commands:

  <ret> or f or <spc>   follow unison's recommendation (if any)

  I                     ignore this path permanently

  E                     permanently ignore files with this extension

  N                     permanently ignore paths ending with this name

  m                     merge the versions

  d                     show differences

  x                     show details

  l                     list all suggested changes

  p or b                go back to previous item

  g                     proceed immediately to propagating changes

  q                     exit unison without propagating any changes

  /                     skip

  > or .                propagate from left to right

  < or ,                propagate from right to left

 

<---- file       aaaaaaaaaaaaa  [f] f

 

Proceed with propagating updates? [] y

Propagating updates

 

UNISON started propagating changes at 15:06:08 on 27 Aug 2007

[BGN] Copying aaaaaaaaaaaaa

  from /222

  to /111

[END] Copying aaaaaaaaaaaaa

UNISON finished propagating changes at 15:06:08 on 27 Aug 2007

Saving synchronizer state

Synchronization complete  (1 item transferred, 0 skipped, 0 failures)

如果检测到两个文件夹有所不同,unison会提示,让你选择相应的操作。如上例所示.

表示右边222的文件夹有新的文件,是否同步到左边的111文件夹,f表示force,然后将确认,进行更新,如果输入?会有更详细的介绍。

2: unison远程使用

使用方法:

# unison <本地目录> ssh://remotehostname(IP)/<远程目录的绝对路径>

例如:

# unison /home/AAA ssh://username@remotehostname(ip)//DB/path/BBB

表示将本机的目录/home/AAA和远端主机的/DB/path/BBB进行同步。一般的,需要两台机能ssh连接。

注意 在主机和目录间又多加了一个 "/"

3:unison参数说明

Unison有很多参数,这里只介绍经常使用的几个,详细的请参看unison手册:

"     -testserver

测试连通性,连接到服务器即退出。示例:

$ unison / ssh://opensou1@bluehost/    -servercmd=~/bin/unison -testserver

如果服务器端 unison 可执行文件不在默认目录下,甚至没有 unison 命令(需要你编译一个上传到服务器),则需要使用 -servercmd 参数告诉要执行的服务器 unison 命令位置。

使用 -testserver 参数,则成功链接即退出,也不会去执行目录的比较等后续操作。

"     -servercmd xxx

告诉 unison, 服务器端的 unison 命令是什么。参见上面的示例。

"     -auto

接受缺省的动作,然后等待用户确认是否执行。

"     -batch

batch mode, 全自动模式,接受缺省动作,并执行。

"     -ignore xxx

增加 xxx 到忽略列表中

"     -ignorecase [true|false|default]

是否忽略文件名大小写

"     -follow xxx

是否支持对符号连接指向内容的同步

"     owner = true (保持同步过来的文件属主)

"     group = true (保持同步过来的文件组信息)

"     perms = -1   (保持同步过来的文件读写权限)

"     repeat = 1   (间隔1秒后,开始新的一次同步检查)

"     retry = 3    (失败重试)

"     sshargs = -C (使用ssh的压缩传输方式)

"     xferbycopying = true

 

"     -immutable xxx

不变目录,扫描时可以忽略

"     -silent

安静模式

"     -times

同步修改时间

"     -path xxx 参数

只同步 -path 参数指定的子目录以及文件,而非整个目录。-path 可以多次出现,例如

  unison /home/username ssh://remotehost//home/username \

      -path shared \

      -path pub \

      -path .netscape/bookmarks.html

4:通过配置文件来使用unison

尽管可以完全通过命令行的方式来指定unison运行所需要的参数,但我们还是推荐使用配置文件来进行配置使用unison,原因很简单,看配置文件比看命令行容易理解,而且可管理性更强。

默认的配置文件夹位于~currentuser/.unison,即当前用户的home目录下,windows则位于C:\Documents and Settings\currentuser\.unison,默认的配置文件名是default.prf.

运行这样的命令:

#unison exitgogo

Unison将默认读取~currentuser/.unison/exitgogo.prf文件里的配置信息.我的配置信息在/root/.unison/exitgogo.prf,因此我们可以根据上面参数的介绍,把所有的参数配置信息写入到一个.prf的文件中.

下面是我的一个web应用中两个文件夹同步的配置信息:

root = /sina/webdata

root = ssh://root@192.168.60.121//sina/webdata

#force =/sina/webdata

ignore = Path as/*

#prefer = ssh://root@192.168.60.121//sina/webdata

batch = true

#repeat = 1

#retry = 3

owner = true

group = true

perms = -1

fastcheck=false

rsync =false

#debug=verbose

sshargs = -C

xferbycopying = true

log = true

logfile = /root/.unison/sina_122.1547.log

说明如下:

两个root表示需要同步的文件夹

force表示以本地的/var/www/bbsnew文件夹为标准,将该目录同步到远端。注意,如果指定了force参数,那么unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步.

Unison本身是可以双向同步的,但是要做到双向同步,就不要设置force参数,如果设置了force参数,就成了单项同步了,此时unison类似与sync.

Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后A B两文件夹的内容相同,是 A B文件夹的合集.

Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准.

ignore = Path表示忽略/sina/webdata下面的WEB-INF/tmp目录,即同步时不同步它。

batch = true,表示全自动模式,接受缺省动作,并执行

-fastcheck  true表示同步时使用文件的创建时间来比较两地文件,如果这个选项为false,unison则将比较两地文件的内容.建议设置为true

log = true表示在终端输出运行信息。

logfile则指定了同时将输出写入log文件。


五:unison FAQ


如何在和远程服务器同步大量数据,上传一部分数据后,超时:

9%  559:15 ETARead from remote host bluehost: Connection reset by peer

Fatal error: Lost connection with the server

实际操作中,最好的方法是,第一次先把要上传的文件打成包,用 ftp 上传,然后展开到服务器中,之后执行一次 unison 同步即可。
 

(责任编辑:南非蚂蚁)

Tags: unison, dropbox, rsync

关于DELL iDRAC6 远程管理卡的区别

单位的R710在莫莫的折腾下终于装好了,由于他装我配置了remote controller,所以兴冲冲的去看了一下,结果没有找到想象中的KVM的图形界面,找了半天也没有找到,所有的菜单都点过来了。。。

最后在网上找到了一些资料,发现:

XML/HTML代码
  1. Remote console/KVM is a capability of the iDRAC 6 Enterprise.  iDRAC 6 Express has no such capabilities.  Here’s a quote from a webcast transcript on DellTechCenter.com:  
  2.   
  3. iDRAC 6 Express is offered as an upgrade on 200–500 series servers and is standard on the 600–900 series. iDRAC 6 is a physical riser card that needs to be added to the server. iDRAC 6 Express offers many remote management features such as an out-of-band Web GUI, advanced security features, several remote management features, power management, and sensor monitoring and alerting  
  4.   
  5. iDRAC 6 Enterprise is offered as an upgrade on 200–900 series servers and is standard on blade servers. iDRAC 6 provides additional out-of-band features including virtual console, virtual media, and a dedicated NIC. iDRAC 6 Enterprise is a physical riser card that provides two additional ports on the back of the server: a RJ-45 network port and an SD slot (for VFlash media)  
  6.   
  7. Hope this helps.”  

好吧,原来express是啥也没有的,我算是明白了,以后要选enterprise了。两者的具体区别可以看这里:http://content.dell.com/cn/zh/enterprise/d/help-me-choose/hmc-server-idrac6-cn.aspx,原来还有一种vFlash.....

Tags: dell, idrac6

中科大Linux镜像源正式面向全国用户开张

用了好久的网易源,慢慢的它的速度也开始慢了。今天在cnbeta上居然看到了这个:中科大Linux镜像源正式面向全国用户开张。觉得很惊讶,但同时又并不惊讶。其实交大也一直是国内linux源的提供点,但一直因为是教育网所以速度非常慢。

先看新闻:经过大半个星期的迁移和新脚本的测试,现在mirrors.ustc.edu.cn已经基本稳定了。

新机器的域名:

IPv4/v6: mirrors.ustc.edu.cn (能解析出教育网/电信/v6地址)

v4only: mirrors4.ustc.edu.cn (能解析出教育网/电信地址)

v6only: mirrors6.ustc.edu.cn

有些地方(比如我测试的合肥长宽),DNS会解析出电信地址,但使用教育网地址访问更快,这时可以通过修改hosts指定强制使用教育网地址访问。

教育网ip:202.38.95.110

电信ip:202.141.160.110

v6地址:2001:da8:d800:95::110

支持的访问方式:

http/ftp/rsync

提供的服务:

原debian.ustc.edu.cn和oss.ustc.edu.cn提供的镜像服务基本上都迁移过来了,除fedora/ubuntu-partner外。fedora正在进行同步,ubuntu-partner也会在近几天同步过来。

原centos.ustc.edu.cn提供的centos/epel/linux-2.6.git也已经迁移过来了。

需要注意的修改:

debian.ustc.edu.cn和oss.ustc.edu.cn两个域名已经设置为mirrors.ustc.edu.cn的别名,大多数镜像 的相对地址没有改变,所以大家基本上不需要对原有设置进行修改(如sources.list),可以继续正常使用。但是以下镜像用户请注意:

1. gentoo用户,原portage地址:

rsync://oss.ustc.edu.cn/pub/gentoo-portage 已经调整为:

rsync://mirrors.ustc.edu.cn/gentoo-portage

2. cygwin用户,原cygwin源地址:

http://oss.ustc.edu.cn/cygwin/cygwin/ 已经调整为:

http://mirrors.ustc.edu.cn/cygwin/

3. 原ubuntu cdimage地址:

http://debian.ustc.edu.cn/ubuntu-cd 已经调整为:

http://mirrors.ustc.edu.cn/ubuntu-releases

4. 原fedora linux地址:

http://oss.ustc.edu.cn/fedora/ 已经调整为:

http://mirrors.ustc.edu.cn/fedora/linux/

5. centos.ustc用户,请修改自己的CentOS-Base.repo和epel.repo,将文件中的域名

centos.ustc.edu.cn 修改为 mirrors.ustc.edu.cn

6. linux-2.6.git用户,请修改origin地址:

git remote set-url origin http://mirrors.ustc.edu.cn/linux-2.6.git

使用帮助:

大多数镜像的使用帮助已经完成,大家在对应的目录下,如:

http://mirrors.ustc.edu.cn/ubuntu/

点击页面上方(标题下方)的使用说明链接,可以打开其对应的帮助信息,如如何设置sources.list文件。或者也可以直接打开

http://mirrors.ustc.edu.cn/mirror-help/.html

在首页上点击使用说明链接,点击其中对应的源的链接,也可以跳转查看相应的帮助。由于人手不够,有些源还没有使用帮助信息,也欢迎大家帮忙写了,发送给我们。

状态监控:

在首页点击页面上方的同步状态链接,可以查看当前各镜像的同步状态,包括成功与否/上游源/镜像体积等。

大家如果知道更好(更新、更快)的上游源,请联系我们。近期我们会申请成为debian和ubuntu等镜像的官方镜像,这样我们可以获得更好的上游源来同步。

如果同步出现故障,服务器的管理员会收到邮件通知,以尽快处理,所以大家看到状态监控页面中有显示同步失败的条目时,无需联系我们。

如果同步状态上显示同步正常,但实际使用过程中发现镜像有问题,请联系我们。

联系方式:

我们的邮箱: lug@ustc.edu.cn

鸣谢:

感谢中国科学技术大学、网络信息中心的支持,特别感谢jameszhang老师为我们提供服务器!

PS,我们下一步打算将pxe.ustc.edu.cn也对校外开放,对外提供一些网络启动服务,类似于boot.kernel.org这种。但是由于国内网络速度不行,所以对校外只能提供一些比较小的Live工具,大家可以给我们推荐一些实用的东西。
-----EOF----
事实上我也很感谢这个源,但我也不知道它能撑多久,要知道网络带宽可是很贵的。当然顺便我也测试了一下,居然我连教育网非常快,而连接电信的服务器特别慢。。哭了。

Tags: ustc, 中科大, linux源, 网易

ubuntu 下安装xhprof

说实话,第一次知道xhprof是在某次小型聚会上,当时echo演示了一下xhprof的作用,并稍作了一些介绍。嗯横,当时出了点小故障,xhprof,安装一直失败,最后就看了一下代码和一些图形界面分析的演示。
由于昨天刚刚安装ubuntu开始了我的装B之旅,所以我偷偷的看了看xhprof,想看看是否能够正常安装。却发现,原来是这样的简单。。。

$wget http://pecl.php.net/get/xhprof-0.9.2.tgz
嗯,这个版本是pecl上最新的版本了。很久没有更新过了。
$tar zxf xhprof-0.9.2.tgz
$cd xhprof-0.9.2
$apt-get install php5-dev
这一步必须,否则无法使用phpize来编译这个so,大约需要20多M的下载,安装完之后,继续。。
$cd extension
$phpize
$./configure –with-php-config=/usr/bin/php-config
这是由于我们的PHP也是apt-get 回来的,所以就不用变了啦。
$make && make install
编译完后,会提示你make test
$make test
当然,在运行途中没有出错的话,可以不运行。
然后,到ini存放的目录里建一个xhprof.ini
$cd /etc/php5/conf.d/
$vim xhprof.ini
输入以下内容。。。
[xhprof]
extension=xhprof.so
xhprof.output_dir=/opt/xhprof/
上面这个dir默认是不存在的,所以需要到/opt/目录下新建一下这个目录。反正都是在自己的机器上,直接chmod 0777 就完事了
嗯横,现在重启一下apache2
$/etc/init.d/apache2 restart
看一下PHPINO,会发现里面多了xhprof了,就两行信息。。。
测试代码可以看一下官方的documention。地址在:http://mirror.facebook.net/facebook/xhprof/doc.html
可以根据doc中的例子写一个简单的代码测试一下:

PHP代码
  1. <?php  
  2.   
  3. function bar($x) {  
  4.   if ($x > 0) {  
  5.     bar($x - 1);  
  6.   }  
  7. }  
  8.   
  9. function foo() {  
  10.   for ($idx = 0; $idx < 2; $idx++) {  
  11.     bar($idx);  
  12.     $x = strlen("abc");  
  13.   }  
  14. }  
  15.   
  16. // start profiling  
  17. xhprof_enable();  
  18.   
  19. // run program  
  20. foo();  
  21.   
  22. // stop profiler  
  23. $xhprof_data = xhprof_disable();  
  24.   
  25. // display raw xhprof data for the profiler run  
  26. print_r($xhprof_data);  

Over了

Tags: ubuntu, xhprof, php

ubuntu 11.04 一天

昨天安装的ubuntu到今天也算是差不多有一天了,用起来嘛,没有什么明显的障碍,事实上和以前的区别也不是特别的大,所以其实上我更多的就是在尝试使用新的界面。
安装好ubuntu后,第一步就是update和重新更换语言包,添加五笔输入法,这些搞定后,我接着就是apt-get install sun-java6-jre,然后在运行的时候同时去netbeans.org下载了netbeans,然后更新了我的firefox所有常用插件,并把我在台式机上的收藏夹,密码,同步了回来。再装了svn就一切都几乎和以前一样了。

接着就是一直操作新界面,起初的时候觉得还行,因为就象一个快捷方式在左边或者说状态栏在左边,但紧接而来的问题就是,该界面学苹果学的不像呀。把菜单栏缩在以前的顶部状态栏上,OK,这没问题,但是窗口用着用着就突然无法正常最大化了也不能拖动了,最明显的就是我用firefox的时候,按ctrl+u看源码,居然就随便浮动了一个小窗口在右侧不能放大不能缩小不能移动。害得我源码也无法看。然后鼠标移动到顶部菜单栏后也无法双击放大缩小(那个控制按钮不见了,firefox刚启动的时候会有这些控制按钮),这反而影响了我的工作效率。所以,在使用了两三个小时后,我退出了这个界面,回到了gnome。。。。。
其实,新界面还是很不错的,至少他的程序组菜单就相对比较方便,只是我更喜欢把常用的拖出来(虽然他可以拖到左侧那可以自动隐藏的状态栏上并锁定在上面,但左侧那一条的反应好象不是特别灵敏,或许是我的机器太烂了吧?)

最后插一句,如果想回到gnome,很方法的,注销当前用户,然后登录的时候,界面选择ubuntu classic就OK了,以后会自动认到gnome的。

Tags: ubuntu, netbeans, gnome