手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:dropbox

文件同步工具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

关注几个同步软件

Dropbox这软件恐怕也不用多介绍,大家都明白。国内类似软件也有不少。不过我真的不太想用这类类似软件。
我想要什么 ?我想要有dropbox这类软件的功能,但可以自主控制,比如我可以使用FTP来做这事,做一类似于SVN的事情。因为使用ftp或者sftp,对数据可以完整的控制,也不再受限。对于一些比较重要的文件,自己也能够放心的存储 。
找了一下,大约有以下几款软件可能会符合我的要求,但还没有尝试。不过我得尝试一下,下周就是我的尝试了。。。
1、DirSync Pro,不过,看介绍好象不能同步远程的。http://www.dirsyncpro.org/features.html,看了一下是不支持。
2、Capivara 是一个支持 SFTP 和 FTP 的文件同步工具,采用 Java 语言开发。通过对文件的时间戳和 SHA-1 哈希值进行文件的比较以便决定是否同步,同时可预览即将进行的同步操作,防止一些误操作。http://capivara.sourceforge.net/,这个是用java,就是不知道效率怎么样。
3、OpenPiczzais是一个免费版本的Piczza文件传输服务。它可以让你可以安装自己的Piczza服务功能。(事实上我真没仔细看,不过看到居然有openpiczza服务,所以准备尝试一下)

总之,也希望看到本文的朋友推荐一些软件(需要支持自己的FTP服务,就象xmarks之类的)。总之最后如果再不行了就只有SVN或者GIT了。其实上我不需要版本控制,但如果有变动,总能够覆盖或合并本地吧?

Tags: dropbox

月光博客:用dropbox备份网站

DropBox最近又在准备折腾了,理由其实不算太充分,事实上,在资料方面,我一直是在用wizExplorer,但是对于文件等,除了QQ的存储,好象没有其他什么的了(当然金山的快盘也行,但不太敢用,因为,以前联想的lenovodata,突然间就成了收费盘,很郁闷的)

Dropbox我在之前也有介绍,也有使用,但就在申请API的第二天,我发现,dropbox再也打不开了,现在嘛,你懂的。。。

主要是我想同步一些目录,和文件,又不是特别大,但是数据比较多,如果用网上的SVN来进行同步,我想,意义也不是特别大。不过,我是有准备将我的服务器慢慢改成svn,因为,它不用备案。有域名就要备案,很繁琐啊。rsynx也可以,但是我需要互动,而不仅仅只是备份

上面是月光的博客:

  虽然目前从国内访问Dropbox有小小困难,但是从国外访问还是正常的,对于拥有国外Linux虚拟主机的用户,可能会遇到这样的需求,就是如何将国外虚拟主机上的网站备份到Dropbox上,下面我以Dreamhost为例介绍一下备份的方法。
你需要有一个国外的虚拟主机,虚拟主机需要有SSH权限,并能访问外网,符合这样条件的虚拟主机有一些,例如Dreamhost这类主机。
使用SSH帐号登录到你的主机地址,之后执行下面的命令:
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86
下载完成文件后,接着,你可以执行下面的命令将其解压缩:
tar -zxof dropbox.tar.gz
接着执行下面的命令将Dropbox程序转移到~目录。
mv .dropbox-dist ~
现在,执行下面的程序即可后台运行Dropbox
~/.dropbox-dist/dropboxd &
第一次执行这个程序的时候,dropboxd会显示一串很长的URL地址,你需要手动在浏览器中执行这个地址,才能将虚拟主机服务器连接到 Dropbox,执行完后,Dropbox的Events中会显示“The computer xxx was linked to your account”,表明该服务器已经连接好。
这时候,你的根目录下会出现一个Dropbox目录,并会自动下载,你可以使用下面命令进入你的Dropbox目录
cd ~/Dropbox
接着,将你的网站目录通过cp -r命令复制到~/Dropbox目录下,就能实现网站的同步备份了。
如果你想停止运行Dropbox,可以通过下面的命令实现:
killall dropbox
对于Dreamhost用户来说,其实你一退出SSH,dropbox就会自动退出,你要想让dropbox一直运行,要购买价格更高的VPS,或者使用screen命令自动挂着SSH也行。
最后赞一下Dropbox的速度,在国外的主机上执行Dropbox真快的吓人,几个G的文件,不到半个小时就全部下载更新完毕,这和国内完全不是一个速度啊,我昨天在国内同步几个G的文件,至少要花整整两天的时间。
参考文章:How To Install Dropbox In An Entirely Text Based Linux Environment

原文来自:http://www.williamlong.info/archives/2222.html

Tags: dropbox, 月光博客, 备份, sync

dropbox ?该不该用?

最近一直在纠结,我该用什么样的知识管理,好象现在都流行什么PKM之类的,但说白了,其实dropbox并不能算是PKM软件,可是我还是把它拿出来说了一下。

wizknowledge 是去年刚出来的软件,作者是写cyberarticle的,我个人以前也算是比较喜欢cyberarticle,只是为了让我在家里同步我的一些数据,我却不得不把我服务器上的远程开了一个远程共享。可是这样太危险了,所以我有放弃的欲望。

而wiz knowledge却让我有这个想法重新启用。因为是可以把资料存到服务器上,可惜容量有限制。

dropbox,是ifotos.net的站长推荐给我的,说是现在流行的人都在用这个,说我如果不用就out了。于是我就想着要试一下,感觉还行,而且听说最近还开放了Dropbox 推出云存储 API,当然我没有试用过,不过我觉得可以尝试一下,因为dropbox感觉不错。

而且dropbox还有一个最重要的东西,就是好象听说它有版本管理,所以我觉得好象也可以做PKM。反正尝试一下喽,死不了。2G空间感觉还能够让我做很多事情吧。

其实我觉得我需要一个这样的软件:

1、带有版本管理,但不是SVN,也不是GIT,我当然知道这两种软件,也很方便,可是我需要版本管理,就象wps的文件管理,现在支持版本了,可是我对于我要上传的东西,不止是文档。

2、我需要的是FTP而不是其他远程的资料管理。比如开放数据库的远程管理啥的?以前的xmarks听说可以,可是我没有使用,后来就换成mozilla weave来管理我的书签了。对于文档,我也想要类似的功能。

3、所以我在想看看dropbox的API能不能实现我的想法?2G空间有点小,可是还能够做很多事情。要知道amazon的云服务也能有类似的功能,但是太贵了。

关于wiz与dropbox的整合,可以看这里:http://hi.baidu.com/talentsgod/blog/item/9b715cc62a2ec8a28226ac86.html,但同时wiz论坛的admin说了:

XML/HTML代码
  1. 现在文挡数量没有限制,200只是一个显示。可以放心使用。  
  2.   
  3. 利用dropbox同步,有几个需要注意的地方:  
  4.   
  5. 1:在一台电脑修改后,要让dropbox完全同步到服务器后再关机  
  6. 2:在另外一台电脑上面开机后,不要自动运行便笺程序,而是需要在dropbox将服务器的内容同步到本地后再运行Wiz各个程序。否则可能会引起索引数据不一致,导致索引出问题。 

Tags: dropbox, wizknow, cyberarticle