如何设置双向快速文件同步?

时间:2012-04-03 08:38:09

标签: performance sync bidirectional

要做到这一点,我正在尝试使用GIT。


我正在尝试开发一个.sh脚本(在linux下)来自动提交git存储库中的所有更改并删除除最后一个之外的所有历史记录修订。存储库必须仅保留最后的提交数据并清除所有以前的历史记录(丢失所有数据)。

例如,我提交3个文件:

  • file1:12 MB;
  • file2:4 MB;
  • file3:12 KB;

提交后,我的.git文件夹大小约为25 MB;

现在我删除了file1和file2。

下次提交后,我的工作副本为12 KB,而我的.git文件夹为25 MB。

我想刷新存储库中的所有数据(丢失数据)以获得尽可能小的.git文件夹。

问题是我需要使用一个单独的非交互式命令行,因为我需要做一个cron脚本。

几个小时浏览论坛我找不到这个问题的解决方案。


真正的问题是:如何设置双向快速文件同步? 要同步的文件夹很大(20 GB,包含数千个文件)。第一次同步会非常慢,没问题,但第二次同步应该更快,不超过30-40秒只比较更改的文件......

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

让它快速运作

使用AeroFSunison

自定义解决方案

使用inotify用于linux,或its equivalent on other platforms获取有关文件系统更改的通知,然后使用librsynclibssh或类似内容传输文件。< / p>

根据您的使用情况,您实际上可能会在cron作业中运行rsync。 rsync算法相当聪明,并且在使用时会传输非常少的不必要的crud。如果你正确设置它,它只会查看上次修改时间。

我肯定会建议在尝试组合临时解决方案之前使用aerofs或unison。

答案 1 :(得分:1)

如何设置双向快速文件同步将是osync。 Osync是基于rsync的双向文件同步,并将使用rsync更新算法来节省一些带宽,仅用于传播更改。 请查看http://www.netpower.fr/osync

答案 2 :(得分:1)

我编写的这个Python脚本可能有所帮助。试一试!

https://github.com/dooblem/bsync