【问题标题】:Can I do a decremental backup with git ? If not, do you know a tool for that?我可以用 git 做一个递减备份吗?如果没有,你知道一个工具吗?
【发布时间】:2020-04-28 22:20:01
【问题描述】:

我的问题可能不寻常,让我解释一下,

  • 我对放在主机上的一个非常大的文件夹 (20go) 进行了第一个 git 版本控制。
  • 我减小了这个文件夹的大小(不是有用的数据),并制作了它的第二个版本。
  • 问题是,git 会在内存中保留第一个版本,因此 .git/ 文件夹会很重。
  • 我不再需要第一个版本了。

我想 git 做增量备份,所以如果我找到删除第一个版本的方法,它会在第二个版本中丢失很多东西,几乎所有内容......

对我来说更简单的方法是删除我的 .git/ 文件夹并创建一个新文件夹,但它仍然很重(从 20go 到 13go)并且需要我几个小时才能保存。

所以这是我的问题:

?您知道我们是否可以使用 git 进行“递减”或“合成完整备份差异”备份,如果不能,您是否知道可以使用的工具?

谢谢

PS:我在 git 上看到了这个解决方案:

  • git checkout --orphan latest_branch
  • git add -A
  • git commit -am "提交信息"
  • git 分支-D master
  • git 分支-m master
  • git push -f origin master

它会擦除git repo中的日志历史,但实际上不是数据的历史,所以它不是一个解决方案。

【问题讨论】:

  • 删除并仅检索最新版本:stackoverflow.com/questions/1209999/…
  • 这能回答你的问题吗? Using git to get just the latest revision
  • 不完全是。新的事情是我有与上一个版本相对应的 git repo 大小(我认为我不能拥有),但我也下载了所有数据,(我已经在我的电脑上拥有了,就像我有上一个版本一样就可以了)
  • 如果我执行 git push -f 然后从我的本地仓库中只包含我的数据的最后一个版本,我的远程仓库仍然保留所有历史数据

标签: git backup decrement


【解决方案1】:

Git 不执行“增量备份”。它确实“提交”。提交通常由一个哈希(将其视为一个地址)组成,除其他外,它允许您检索,

  • 上一个提交地址(哈希)
  • 提交作者
  • 提交时的树

最后一个通常是最有趣的,因为树有效地描述了整个目录/文件层次结构通过使用相同的哈希->内容系统! (事实上​​,git 被描述为建立在内容可寻址文件系统之上的 VCS。此外,当树中的文件没有不同时,git 节省了一些空间(我相信),因为它们的地址相同,因此只需要git 数据库中的一个对象。)

这一切对你意味着什么

  1. 别再把 git 当作备份软件了;它是版本控制软件,至少了解底层模型的一部分会让你走得很远。 @torek 写了很多关于这个的答案,并且有一些很好的谈话。
  2. 擦除历史意味着创建一个全新的提交,它指向与以前不同的提交。

我可以想到几种不同的方法来实现 (2)。第一个是git rebase -i @~2(假设你只有两次提交),然后在rebase 配方中删除第一个like。这告诉 git 重写历史,但跳过第一次提交。我希望这会失败,但我愿意犯错。

另一种选择是git filter-branch,有数百个互联网页面介绍了如何使用它从整个历史记录中删除某些文件。

之后,git gc 应该有助于节省一些空间,但只有在确定一切正常后才这样做。

【讨论】:

  • git gc 节省了磁盘空间,但肯定会增加任何增量备份的大小,因为每次备份都会复制新的包文件。
  • @phd 嗯?我不确定我是否遵循你的推理。
  • git gc 的每次运行都会删除旧包文件并创建新的大包文件。运行增量备份,那些新的大包文件将被复制。如果没有git gc,增量备份将仅复制.git/objects/ 中的新文件。
  • @phd 你的意思是 git 之外的增量备份(à la TimeMachine)吗?我认为这不是问题(空间很便宜,分发你关心的 git 项目可以减少对它们进行良好备份的需要)。
  • 如果空间不是问题,谁需要增量备份?只需复制所有内容即可!
【解决方案2】:

感谢您的回答。我没有找到办法,所以我只是选择擦除并重新创建我的 repo .git/

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2012-10-19
    • 2021-05-11
    • 2021-09-04
    • 2015-03-11
    • 2019-02-13
    相关资源
    最近更新 更多