离线工作的文件同步方式

当今社会,网络已经非常普遍,基本上到处都有WiFi,无限流量也不是很贵,然而在日常 的工作当中,我们对于离线工作还是有一定的需求。比方说以下场景

  1. 我有两台电脑,台式机+笔记本。但上班时间基本上不开笔记本,只用台式机
  2. 下班后直接带笔记本回宿舍,但是宿舍没有网;即使有网,网络情况也很差。小文件还 算可以,同步大文件真是让人抓狂,基本上无法使用网络进行同步。
  3. 有时还会在图书馆或别的电脑上进行编辑工作,可能没有网络,或者没有相应的客户端
  4. 我希望在能够随时开展我的编辑工作

即使有网络,各种网盘服务提供商,做的好的厂家在国内无法访问,容量大的厂家搞限速 ,不限速厂家的限制流量,要不就是跨平台做的不怎么样。数据上传有审查,数据丢了没 赔偿1,反正大佬们就是这么牛。

本人就是这么有强迫症,好吧,现在言归正传,在时常没有网络的情况下,如何进行数据 同步与备份呢??以下是本人的方案

1. 格式化为exfat的U盘

现在的存储设备完全是白菜价,本人手上有一个32G的U盘,格式化为exfat格式,作为自己的工 作盘,存储那些手头上的工作项目。

本人的工作项目主要是一些文本编辑工作,比如写文档,代码,看看PDF等。

为什么要格式化为exFAT格式呢?因为exFAT是最通用的格式类型。简单来说,

  • exFAT支持最多的系统,Mac、windows、linux通吃,不用安装任何补丁包就可以。
  • exFAT更适合闪存系统,有助于延长U盘的使用寿命。

exFAT的缺点主要是为了减少对U盘的读写,没有采用“日志式”的方式记录磁盘的详细读写 操作,也就无法从磁盘恢复已经删除的文件。但是本人觉得及时将文件备份比从磁盘恢复 更加靠谱,所以也就可以容忍了。

2. rsync

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使 用所谓的“增量同步”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个 文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync特点

  • 可以镜像保存整个目录树和文件系统可以保留原有的权限(permission,mode),
  • owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes) 信息等
  • 传输效率高,使用同步算法,只比较变化的部分,这一点强于cp -r
  • 支持匿名传输,方便网站镜像;也可以做验证,加强安全
  • rsync是个跨平台的软件,在多种系统上均可用

rsync格式

 rsync [OPTION] … SRC   DEST
 rsync [OPTION] … SRC   [user@]host:DEST
 rsync [OPTION] … [user@]host:SRC   DEST
 rsync [OPTION] … SRC   [user@]host::DEST
 rsync [OPTION] … [user@]host::SRC   DEST

rsync常用选项

-a 包含-rtplgoD
-r 同步目录时要加上,类似cp时的-r选项
-v 同步时显示一些信息,让我们知道同步的过程
-l 保留软连接
-L 加上该选项后,同步软链接时会把源文件给同步
-p 保持文件的权限属性
-o 保持文件的属主
-g 保持文件的属组
-D 保持设备文件信息
-t 保持文件的时间属性
--delete 删除DEST中SRC没有的文件
--exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步
-P 显示同步过程,比如速率,比-v更加详细
-u 加上该选项后,如果DEST中的文件比SRC新,则不同步
-z 传输时压缩

因此,在U盘里建立需要同步的一个文件夹(如SRC),假设我们把台式机内的备份位置命 名为用户目录下的DEST,那么我们可以使用以下命令让DEST文件夹的内容与SRC中保持一致 。

rsync -rtlgoDz --delete ../SRC ~/DEST

这里,为了文件权限的错乱,不使用-p参数对权限信息进行同步; 使用–delete删除一些同步目录里已经删除的文件,这个在结合Git使用时特别有用。 -z作为传输时的压缩选项,可以酌情添加。

在该文件夹内建立一个同步的脚本sync.sh,将上述内容写入,每次在需要同步时,直接运 行即可。

3. 本方法的特点

其实这个方法没有同步只有备份,喜欢实时同步的同学可能要失望了。但是这个方案有其 优点

  1. 不需要网络,不需要等待同步,即使使用usb2.0的U盘,也比网络更快
  2. 因为不是实时同步,也就避免了错误文件被同步,从而导致远程备份被更改。
  3. 多机备份,这样做数据至少有两份副本,再结合Git,基本上满足了我的备份需求。
  4. 所要编辑的资料随身携带,即使不是自己的电脑,也可以插入U盘就可以开始工作。

对于我来说,唯一的缺点就是如果U盘丢失,资料可能被窃取,目前还没有好的办法。使 用某些磁盘加密工具可能有效。

  1. https://baijiahao.baidu.com/s?id=1608142183319333964&wfr=spider&for=pc