Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git作为远程备份和更新系统_Git_Embedded_Backup - Fatal编程技术网

Git作为远程备份和更新系统

Git作为远程备份和更新系统,git,embedded,backup,Git,Embedded,Backup,我有一个远程设备,我可以通过无线和间歇链接访问它。 该设备记录每日数据,我希望能够以可靠的方式获得所有更新。 我想使用git的目的是: 我会有一个定期的工作,git会提交远程服务器上的所有日志 在本地服务器上,我将git拉取任何新日志,以便底层协议处理连接的原子性和健壮性 但是,我仍然有一个问题:如何使远程存储库保持“小型”?我想以某种方式清除我已经在本地服务器上得到的修订,但保留本地服务器上的历史记录 我尝试了git过滤器分支和重新打包,但它破坏了所有克隆。我相信git rebase也是如

我有一个远程设备,我可以通过无线和间歇链接访问它。 该设备记录每日数据,我希望能够以可靠的方式获得所有更新。 我想使用git的目的是:

  • 我会有一个定期的工作,git会提交远程服务器上的所有日志
  • 在本地服务器上,我将git拉取任何新日志,以便底层协议处理连接的原子性和健壮性
但是,我仍然有一个问题:如何使远程存储库保持“小型”?我想以某种方式清除我已经在本地服务器上得到的修订,但保留本地服务器上的历史记录

我尝试了git过滤器分支和重新打包,但它破坏了所有克隆。我相信git rebase也是如此——交互式,增加了需要手动编辑文件的问题(即更改pick->squash)


也许每次都会创建新的分支并删除它们?

如果您担心远程系统上存储库的空间会被占用,那么我建议您根本不要在远程系统上使用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
而不是数字后缀)节省空间,特别是当您将文件复制到没有空间问题的地方时,可以从源设备中删除这些文件。