0
0

使用unison同步文件

alswl 发表于 2011年09月27日 22:28 | Hits: 2353
Tag: Linuxer | unison

1. 同步控

我是一个同步控,会妄想自己的文件遭遇不可修复性的毁灭, 因此经常丧心病狂的做备份。 比如每每备份到移动硬盘中, 比如每年一次的刻盘备份,又比如我现在要介绍的同步软件unison。

据我自己考察,这种对备份文件丢失的恐惧来自于小时候一次意外格式化F盘, 从而导致我搜集的所有《龙珠》漫画丢失而产生的。

另一个同步文件的需求来自于我的两台电脑:常驻家中的DELL 6400,是我的大房; 最近得宠的小蜜Thinkpad X201。其中6400是Win7系统, 而X200是Arch Linux主打的双系统,我希望两者的文件保持同步, 便于我两边使用时候都能检索资料。如何实现跨平台同步方案让我头疼了好久, 幸好有unison拯救了我。

2. 同步历史

很久很久以前,那时候我还喝三鹿,我开始用TotalCmd来做同步文件, 依稀记得那个功能是在命令里面的比较文件夹。 这个功能满足我当时简单粗糙的需求。只要把需要同步的文件夹分列TotalCmd两侧, 然后就可以通过命令自动查找相异的文件。

当时在我看来,尤其神奇的是文件过滤功能和按照日期、文件内容比较功能。 着实帮了我很大忙。

再过了几年,TotalCmd不能满足我了,我不想每次都选择需要同步的文件, 再用肉眼比对,同步功能也偏少。我搜寻到一款老牌的同步工具, 叫做GoodSync,这是一款商业软件,可以试用30天, 作为专业的同步软件,这个GoodSync的确是蛮适用:支持大小写屏蔽、 文件过滤等等。

GoodSync还可以支持网络映射硬盘,再通过Samba等协议支持,可以实现跨平台同步。 可惜GoodSync要收费,而且通过网络映射的方式也不慎完美,所以最后也弃用了。

3. unison

终于轮到unison闪亮登场了。 unison解决了跨平台同步,文件过滤,断点续接,大小写同步等等各种问题。

官方介绍:

Unison is a file-synchronization tool for Unix and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.

 

Unison是一枚Unix和Windows通吃的文件同步工具。它允许不同电脑上(或者同一电脑上不同地方)的文件和目录之间惊心修改和同步更新。

 

unison使用时候有服务器、客户机之分,客户机通过ssh连接到服务器端, 所以相对而言,数据通道还是安全的。

4. 安装

sudo pacman -S unison

感谢众神赐予我们各种软件包,以上是Arch Linux的安装命令。 Ubuntu之类的也差不多apt-get了。

5. 配置

unison的传输通道用ssh,所以必须在同步的电脑上面配置好ssh, 服务端需要配置好sshd,另外最好配置好ssh公钥密钥,可以参考使用DDNS+SSH连通家庭/工作电脑

unison使用~/.unison/*.prf的配置文件,默认应该会有一个default.prf, 我的default.prf配置如下。

# Unison preferences file
#root = /cygdrive/f
#root = ssh://mm061.log4d.com//home/alswl

log = true
logfile = /home/alswl/.unison/.unison.log

#batch = true
#auto = true

#ignorecase = true
ignore = Name {Thumbs.db}
ignore = Path {music/iTunes}

其中root表示同步的两个目录,ssh开头的服务器端路径。log设定log文件位置,batch指自动同步而不经过确认,auto是同步之后列出同步建议清单, 选择yesorno即可。ignorecase是忽略大小写,在跨平台同步时候蛮有用。ignore指忽略文件列表,分为Name和Path。

我的default配置并不是一个可用配置,只是一个基础配置文件,用来给其他配置文件使用

# Unison preferences file
include default

root = /home/alswl
root = ssh://mm061.log4d.com//home/alswl

path = music

我使用include选项来加入default配置,就可以使用通用配置了。

6. 运行

终于到了激动人心的时刻了,我们使用下面命令同步文件夹。

unison music

其中music就是之前配置好的music.prf。Papapa之后,就是各种选项了。

unison默认情况下面会依次提醒每个差异文件的差别,可以使用键盘命令查看具体差异。 依次查看文件会很烦,所以我习惯性使用auto命令来自动合并。auto会根据文件的状态,最后更新日期来选择合适的同步操作。

完了,没了,谢谢。

哦,对了,当时写那篇使用DDNS+SSH连通家庭工作电脑大部分原因就是因为这个同步需求。而且经过我3个月来的使用,unison真是个好工具。

版权所有 © 2010 转载本站文章请注明: 转载自Log4D
原文链接: http://log4d.com/2011/09/unison
您可以随意地转载本站的文章,但是必须在醒目位置注明来源及本站链接,不可以将本站文章商业化使用,或者修改、转换或者以本作品为基础进行创作。
3a1ff193cee606bd1e2ea554a16353ee

你也许会喜欢下面的文章

原文链接: http://feedproxy.google.com/~r/dddspace/~3/1RLP2gF0Vvk/unison

0     0

我要给这篇文章打分:

可以不填写评论, 而只是打分. 如果发表评论, 你可以给的分值是-5到+5, 否则, 你只能评-1, +1两种分数. 你的评论可能需要审核.

评价列表(0)