一种让网盘能够用来同步代码的方法(顺便安利一个文件同步、备份软件)

2016-11-06 13:52:25 +08:00
 starvedcat

问题

我有这样一个需求,应该不小众吧:我有两台电脑,一台放家里,一台出门用。我希望这两台电脑之间能够同步代码。

有人可能会说:你直接让网盘同步整个代码文件夹不就行了吗!然而代码文件夹里会产生许多临时文件,比如 VS 的中间文件, java 的.class 等等。如果直接同步整个文件夹,结果就是你一边编程调试,网盘一边就在不停地上传;更别提,当你打开另一台电脑时,这些没用的临时文件也会被同步下来, VS 临时文件几十 M 不稀奇,那就干等着吧。

还有人可能会建议用 github 之类的代码托管服务,这样就可以用.gitignore 了。可是我的很多程序只是一些小玩具,小想法,根本用不到版本控制。而且打开命令行去一个个项目 push 、 clone 也很费事。

这个问题本质上其实非常好解决,只要网盘在同步之前,加一个根据文件的路径来过滤的功能就行了。虽然要求添加这个功能的呼声很高,但是网盘的开发者似乎不这么想。至少 dropbox 和 OneDrive 这两个墙外最流行的网盘并没有提供这个功能。

解决

好了!废话说了一堆,开始说方法:

方法就是—— FreeFileSync 这个软件! http://www.freefilesync.org/ (我用的是 Windows ,但官网上提供各种操作系统下载,我觉得这个方法对其他操作系统也是适用的。)

这个软件可以同步两个文件夹里的内容,并且支持根据文件路径过滤(!)。而且,还可以把整个同步计划(源目录、目标目录、要过滤的文件等设置)保存成设置文件,要用的时候点两下鼠标就行了

具体操作

比如我的程序都放在 D:\Program

我的 OneDrive 同步目录是 D:\OneDrive

当我要出门的时候,在电脑 A 上运行“ Program -> OneDrive ,镜像”这个同步计划,代码被复制到了 OneDrive 中

当我在外面,在电脑 B 上运行“ OneDrive -> Program ,镜像”这个同步计划,代码被复制到了 Program 中。马上可以开始愉快的编程了!

同理,如果要把代码从电脑 B 转移到电脑 A ,也是同样的操作。

在这过程中,得益于文件过滤功能,操作的都是源代码,所以体积超小,速度超快,几秒钟完事。

7224 次点击
所在节点    分享发现
47 条回复
starvedcat
2016-11-06 13:56:34 +08:00
这个方法我自己用了快一个月了,感觉很不错。。。。就是分享一下。
jigloo
2016-11-06 13:58:32 +08:00
直接在同步文件建个 git repo 也相当方便。
starvedcat
2016-11-06 14:00:05 +08:00
我废话太多了,简要地说就是:用这个 FreeFileSync ,将代码复制到网盘,再利用网盘同步。
关键点在于:
1. FreeFileSync 支持根据文件路径过滤,你可以过滤掉“*.cache ”或者“*\Java\*\bin\”这样的东西
2. FreeFileSync 可以把整个同步计划保存成文件,这样要用的时候只需要点点鼠标,非常方便,毫无负担
starvedcat
2016-11-06 14:02:25 +08:00
@jigloo 点两下鼠标还是比打开 cmd+挨个项目敲一堆字母要方便多了
jigloo
2016-11-06 14:04:26 +08:00
@starvedcat 每个项目要都要设置一次,不会有太多人这么用的。
starvedcat
2016-11-06 14:09:10 +08:00
@jigloo 不会啊,我现在是用这个方法同步所有代码,整个 D:\Program 目录,只需要设置一次,一劳永逸
jigloo
2016-11-06 14:11:35 +08:00
@starvedcat 你愿意别人不一定愿意。

git repo 的方式更通用,因为别人都装了类似小乌龟, sourcetree , pycharm 这种客户端,不需要引入额外的复杂度。

你声称的命令行敲命令的问题基本不存在。
tchekai704
2016-11-06 14:14:57 +08:00
lz 我需求和你一样。
你的方案丢失了自动化,需要手动触发了;
总体思路还不错,我也试一下!
ccjeaty
2016-11-06 14:19:02 +08:00
码云才是真爱
shierji
2016-11-06 14:24:36 +08:00
我总觉得 github 才是最终解决方案
Osk
2016-11-06 14:25:38 +08:00
git windows 好像有 GUI 的吧, Open Git GUI Here...
helloccav
2016-11-06 14:27:35 +08:00
我现在用 GoodSync,和楼主的软件差不多,但同步之前可以先预览将要同步哪些文件,让我不会无意中同步错误.
以前用过 Dropbox 、 btsync 等实时同步软件,都有个共同的问题:不知有没有同步完,有时软件显示同步完,但可能因为网络问题没有同步完。所以我更喜欢手工触发同步,至少我可以明确知道有没有同步完成。
Hanxv
2016-11-06 14:29:28 +08:00
git 難道不更加方便麼…等你代碼多了…💊
imn1
2016-11-06 15:34:20 +08:00
至少我知道 mega/btsync 都有扩展名过滤功能,应该大部分同步软件都有过滤吧?
做得好的可能黑白名单更丰富,不仅扩展名,还有如字节数、时间、签名等等
zhuangtongfa
2016-11-06 15:43:10 +08:00
坑爹的 node_modules
woodrat
2016-11-06 15:53:16 +08:00
Linux 下用 win10 虚拟机 + FreeFileSync 来使用 OneDrive 好几个月了。 linux 下的 OneDrive 客户端总是有各种 bug , FreeFileSync 就是每次要同步的时候需要手动运行一下这点比较麻烦。
douglas1997
2016-11-06 18:05:37 +08:00
iCloud 还行?
think2011
2016-11-06 18:41:33 +08:00
直到现在 dropbox 还不能忽略自定义文件夹, node_modules 之类的..
scenix
2016-11-06 19:43:08 +08:00
用 Rsync 啊, 写个 Crontab 就行了
kmahyyg
2016-11-06 23:15:30 +08:00
webide 团队协作更好吧……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX