文件同步

现在手头电脑一定不止一个,文件呢也已经远远超过U盘拷贝就能备份所有数据的年代了。怎么同步电脑上的数据呢?下面是我尝试过的一些。

备份和同步
比较适合电脑和手机等各种设备做同步。
缺点
-不是所有电脑都能随便安装软件,如果不是绿色版这个就是麻烦事。
-而且,国内上Dropbox的情况不是很稳定。
-另外,把保密的信息还是留在自己电脑上好了,万一哪天密码丢了……
开源的项目,适合本地文件夹的同步。最适合同步电脑目录和移动硬盘。
如果要同步另外一台电脑,就必须将其中一台通过共享目录的方式映射到本地驱动器。
基本和上面提到的FreeSync一样,就不加叙述了。
缺点
-只能是目录方式进行同步
-公司电脑的策略很奇怪,无法共享目录
FTP方式来做文件同步
两台电脑之间同步备份,其实来很多年之前就有了公开的标准,这就是FTP文件传输协议。因为是公开的协议,可以选择的工具也非常丰富,只需要在熟悉的工具中选择即可。具体操作的方法可以参考本人以前的文章
FTP服务器
  • FTPServer lite
    • 一个小巧的FTP 服务器
    • 全免费
    • 无需安装
    • 缺点就是速度比较慢
  • Quick’n Easy FTP server Lite:
    • 小巧绿色,无需安装
    • 免费使用功能已经能满足需求,但会限制同时连接用户数量,对于备份来说已经足够了
    • 配置方便,直接保存到本地目录
FTP客户端
  • FileZilla
    • FTP下载的利器
    • 支持多线程,速度快
    • 可以目录同步
    • 设置方便
  • WinScp
    • 可以支持目录同步
    • 不知为何,速度太慢
  • wget
    • 其实来就是做FTP镜像站点
    • wget -b -m -nH  ftp://user:passwd@192.168.0.1
      • -b:应用程序后,自动放入后台,输出日志到当前目录下wget-log文件
      • -m:mirror,就是镜像的意思
      • -nH:不产生站点的目录名,我讨厌产生那样的目录。
    • 就这么简单
    • 定时任务怎么写
    • wget -b -m -nH  -P d:/bakup -o d:/log/output.log ftp://user:passwd@192.168.0.1
      • -P:指定下载后的本地存放目录位置
      • -o:指定输出日志的路径
    • 缺点:
      • 在本地每个目录都会产生一个.listing的文件。
      • 只能单向同步
最方便的方式是WinSCP来操作,毕竟是有图形界面来操作的。但如果使用的多了,就会发现用脚本配合wget来操作是非常方便的。需要注意的是wget的参数众多,如果运用的好,更加可以事半功倍。
本地网络设置情况
由于本人备份的数据量超过几十G,即便是通过100M网线,每次同步也要耗费巨大的时间。一个快速的本地网络才是局域网数据快速备份的基础。
在房间有一个无线路由器,WIFI连接可以支持 802.11n标准,也就是网速最高可以达到150M。同时路由器也具备10/100M网线接口。所以,理想的情况下,笔记本通过无线与网线连接的台式机处于一个局域网中,也可以达到100M的网速。但是实际情况却是,这种连接下FTP的最高速度只有6M左右。更倒霉的是,公司配置的HP笔记本,其WIFI模块工作稳定性极差,不时断网,造成连接时断时续。
好马配好鞍,其实来现在的电脑都集成了1000M的以太网接口,为什么不试试1G网速的点对点对联呢?为了方便,在网上花了几十块购买了一个1G的PCI网卡(TG-3269C)。这个网卡不但支持1G网速,而且端口还自动支持网线反转。这样就可以直接使用手头路由器到电脑的那根网线,而不用特制对联的网线了。在将两个电脑的IP地址设成一个网段,比如 IP1=192.168.1.5 IP2=192.168.1.6 Mask=255.255.255.0 。现在就可以享受千兆网络带来的便利了。
测试的结果是网速最高可以达到21MB/s的水平。一分钟大概就可以将1G的文件传送过来。基本可以满足半小时备份电脑上几十GB数据的要求了。

有事没事请备份

备份的起因

公司电脑上使用过几年后,居然已经积累了几千个文件,还有近十个G的邮件。由于有了Everything来搜索文件,lookout来搜索邮件以,平时查找文件什么的还是挺方便的。但是原来依靠U盘拷贝来备份的方法显然已经无法在这种状况下继续满足要求了。

而笔记本的机械硬盘到底是非常脆弱的,轴承,磁头,悬臂,玻璃盘,电缆这些东西在几万次的读写后肯定会有损耗,特别是在我这种不经意的人手里,保不齐那天挂掉。希望SSD之类固定大容量存储设备快快现身,解决这棘手的问题。

常见备份的方法

目前常见的备份方法有:

  • 移动硬盘拷贝。优点:容量大,速度快。缺点:不要丢掉,不要摔坏的话,估计还好吧。
  • 网盘同步。国内用户还是放弃这个吧,一是说不定那天你常用的那个网盘就盒斜了,而且容量有限,国内网速实在是……。最最关键的是,公司的内部文件是不能采用外部存储系统的,这个大家小心一些为好(Google Apps 大哭……)
  • 与另一个电脑同步。这是我的方法。好处是公司的所有文件我在家也可以使用,加班弄点什么,就不用开公司电脑(关键公司电脑实在是慢的无语)。下面介绍的就是这个。
  • 定期光盘。这个适合我的照片这些东西,不会修改,智只会增加。Picasa定期导出一个年度的照片做一个合集还是不错的。不过公司的文件要修 改,Outlook的PST文件可是一个大块头,刻不下。
  • 磁带机。哦,怀念这东西。不过,你现在还是好好安息吧。

电脑间同步的方法

在我看来在两个电脑之间同步,是最为节省资源的方法。如果是在目录(包括本地目录和共享目录)之间同步,微软的SyncToy感觉还不错。但是如果你要同步的内容无法在共享目录方式下访问,比如公司电脑禁止了共享,没有安装samba的Linux主机等,则无法使用此工具。

电脑间采用FTP同步

我倾向于使用更加简单而且标准的文件传输工具,这里推荐FTP方式,因为支持的工具最多,基本都是免费的。协议标准而且和平台无关。

  • 迷你FTP服务器,推荐一个TYPSoft FTP Server,网上可以找到小巧的绿色版本。
  • FTP客户端,Filezilla是一个不错的选择。功能全面,免费,使用起来也挺方便。
  • 另一个FTP,SFTP客户端,WinSCP绝对是一款值得拥有的工具。

所要做的事情就是

  • 设置FTP服务器,我喜欢把需要同步的目录的上一级目录作为跟目录。
  • 建议:单独建立一个FTP帐号用于同步重要信息,并设上密码。
  • Filezilla只需要用这个帐号连接这个服务器,下载相关的文件即可。
  • 而如果使用WinSCP作为客户端连接服务器,则可以实现双向同步。

由于Filezilla只能实现单向下载同步,对于重要文件只能单向来说是足够的。

  • 比如从公司电脑下载到移动硬盘上
  • 网站内容的定期备份

但是如果需要双向的同步,可以采用WinSCP来进行。

在我的Linux主机和本地电脑之间的同步上,就采用了WinSCP同步的方法。如果需要双向同步,请在Direction/target directory中选择Both进行。

结论和期望

目前看来,这种FTP同步的方法可以满足大部分需要。但是还是有一些不足之处

  • 速度还是比较缓慢(SyncToy > Filezilla > WinSCP)。
  • 而且由于文件名和目录深度的问题,经常导致有个别文件无法在FTP中传输(估计是文件名长度超过了FTP的规定)。
  • 在传输大文件的时候,由于只是更改了一小部分呢(比如outlook的PST文件),需要传送数G的文件。

在我看来,能否有这样一个同步软件,满足以下的要求:

  • 服务器和客户端一体,小巧而且绿色,操作简单。
  • 无需依赖文件共享等平台依赖的机制(部分Windows无法共享目录)
  • 传输文件需要用户认证,防止文件外泄。
  • 采用索引机制,对本地目录建立修改记录数据库。
  • 超过100MB的文件进行分块修改记录的建立。
  • 在同步的时候,两端先比较修改数据库,找出需要传输的文件和数据块。
  • 采用数据压缩的方式传输数据(类似HTTP的gzip方式),而对ZIP, RAR, JPG等文件则不进行压缩。
  • 同步结束后,两端进行数据校验。
  • 数据传输和平台(操作系统,字节顺序等)无关。

也许在目前网络硬盘同步的大形势下,还在想要这样的工具实在是有点落伍了。