2

为此,我正在尝试使用 GIT。


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

例如,我提交 3 个文件:

  • 文件 1:12 MB;
  • 文件 2:4 MB;
  • 文件 3:12 KB;

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

现在我删除file1和file2。

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

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

问题是我需要使用一个非交互式命令行来执行此操作,因为我需要执行一个 cron 脚本。

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


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

感谢您的任何帮助。

4

3 回答 3

1

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

https://github.com/dooblem/bsync

于 2013-11-15T21:18:34.453 回答
1

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

于 2013-08-18T14:39:45.110 回答
1

让它快速工作

使用AeroFS一致

定制解决方案

使用Linux的inotify或其他平台上的等效程序来获取文件系统更改的通知,然后使用librsynclibssh或类似的方法来传输文件。

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

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

于 2012-04-03T11:16:30.600 回答