Git作为远程备份和更新系统
我有一个远程设备,我可以通过无线和间歇链接访问它。 该设备记录每日数据,我希望能够以可靠的方式获得所有更新。 我想使用git的目的是:Git作为远程备份和更新系统,git,embedded,backup,Git,Embedded,Backup,我有一个远程设备,我可以通过无线和间歇链接访问它。 该设备记录每日数据,我希望能够以可靠的方式获得所有更新。 我想使用git的目的是: 我会有一个定期的工作,git会提交远程服务器上的所有日志 在本地服务器上,我将git拉取任何新日志,以便底层协议处理连接的原子性和健壮性 但是,我仍然有一个问题:如何使远程存储库保持“小型”?我想以某种方式清除我已经在本地服务器上得到的修订,但保留本地服务器上的历史记录 我尝试了git过滤器分支和重新打包,但它破坏了所有克隆。我相信git rebase也是如
- 我会有一个定期的工作,git会提交远程服务器上的所有日志
- 在本地服务器上,我将git拉取任何新日志,以便底层协议处理连接的原子性和健壮性
也许每次都会创建新的分支并删除它们?如果您担心远程系统上存储库的空间会被占用,那么我建议您根本不要在远程系统上使用Git
可以考虑使用本地和远程系统之间的同步。为了在本地系统上保存历史记录,您可以在每次
rsync
之后提交到本地系统上的Git存储库。这样,您在本地系统上有一个备份,具有完整的历史记录,而在远程系统上根本没有历史记录。如果您担心远程系统上存储库的空间会被占用,那么我建议在远程系统上根本不要使用Git
可以考虑使用本地和远程系统之间的同步。为了在本地系统上保存历史记录,您可以在每次
rsync
之后提交到本地系统上的Git存储库。通过这种方式,您可以在本地系统上备份完整的历史记录,而在远程系统上则没有任何历史记录。Git是一种相当过分的备份,您可以每天旋转日志文件,并将其rsync/scp移走,删除您刚才复制的文件(除了当前日志文件,它可能仍在写入).Git有点过分了,你可以每天旋转日志文件,然后rsync/scp它们,删除你刚才复制的文件(除了当前的日志文件,它可能仍在写入)。假设有一天我错过了同步窗口:我会丢失快照。这就是git的用武之地:它保留了前一天的快照,以便我在重新连接时尽快提取。这不是我用rsync得到的结果,正如你所说,rsync确实是网络高效的。假设有一天我错过了同步窗口:我会丢失快照。这就是git的用武之地:它保留了前一天的快照,以便我在重新连接时尽快提取。这不是我用rsync得到的,正如你所说,rsync确实是网络高效的。。。git是节省空间的,因为它只存储差异,并且根据历史记录跟踪客户机的位置。此外,我需要处理二进制文件(实际上是rrd文件),这些文件不会以通常的方式进行旋转(即复制和截断)。我当然知道logrotate的方式,感谢您在讨论中指出了这一点,只是我试图了解每个解决方案的优缺点。您在问题中没有提到RRD,所以我将其解释为“常规”日志文件,只是添加了新内容。将RRD文件放入版本控制中是否很有意义?它们提供自己的历史记录(当然,越往回走,分辨率越低)。此外,git仍然比简单的每日轮换文件(使用dateext
而不是数字后缀)节省空间,特别是当您将文件复制到没有空间问题的地方时,您可以从源设备中删除这些文件。。。git是节省空间的,因为它只存储差异,并且根据历史记录跟踪客户机的位置。此外,我需要处理二进制文件(实际上是rrd文件),这些文件不会以通常的方式进行旋转(即复制和截断)。我当然知道logrotate的方式,感谢您在讨论中指出了这一点,只是我试图了解每个解决方案的优缺点。您在问题中没有提到RRD,所以我将其解释为“常规”日志文件,只是添加了新内容。将RRD文件放入版本控制中是否很有意义?它们提供自己的历史记录(当然,越往回走,分辨率越低)。此外,git仍然比简单的每日旋转文件(使用dateext
而不是数字后缀)节省空间,特别是当您将文件复制到没有空间问题的地方时,可以从源设备中删除这些文件。