.git目录中有这么多文件。缓慢备份

时间:2018-01-13 09:11:54

标签: git backup

每隔一段时间我都会备份我的硬盘部分。我不想以这种方式讨论我这样做的原因。我想要讨论的是复制.git目录时备份速度特别慢。即使是简单的项目,这个.git目录中也有~5000个文件!我正在运行这些项目的多个。它们一起只有约60 mb左右。 git目录有更多的文件,然后我的项目呢!这对复制来说效率很低。复制效率非常低:我认为所有这些.git目录都会丢失90%的时间。

有没有办法设置git有效地将所有内容整合到一个大文件中?或者可能是10到50.但不是5000。

2 个答案:

答案 0 :(得分:3)

就像@VonC所说,git bundle是一个很好的方法,但需要做一些工作。

更容易做的事情是在复制之前调用存储库中的git gc

这样,.git\objects文件夹中的所有小文件都将以非常快的速度打包到大包文件中。

Ps:你也可以做一个git stash(带有好的选项)来保存所有当前的变化,这样你只需要保存.git文件夹(而不是工作目录) )。这样,备份更快。您将能够从git数据库重新填充工作目录。

答案 1 :(得分:1)

您不应尝试备份所有open System.Collections.Generic // for Dictionary let series = [|30;21;29;31;40;48;53;47;37;39;31;29;17;9;20;24;27;35;41;38; 27;31;27;26;21;13;21;18;33;35;40;36;22;24;21;20;17;14;17;19; 26;29;40;31;20;24;18;26;17;9;17;21;28;32;46;33;23;28;22;27; 18;8;17;21;31;34;44;38;31;30;26;32|] let initialAeasonalComponents (series : int []) slen : Dictionary<int, double> = let seasonals = new Dictionary<int, double>() let mutable seasonAverages = [] let nSeasons = series.Length / slen // compute season averages for i in 0 .. nSeasons-1 do seasonAverages <- series |> Array.sub <|| (slen * i, slen) |> Array.sum |> float |> fun s -> s / (slen |> float) |> fun e -> [e] |> List.append seasonAverages printfn "Seasons Averageß: \n %A" seasonAverages // compute initial values for i in 0 .. slen-1 do let mutable sumOfValsOverAvg = 0.0 for j in 0 .. nSeasons-1 do sumOfValsOverAvg <- series |> Array.item (slen*j+i) |> float |> fun el -> el + sumOfValsOverAvg - seasonAverages.[j] seasonals.Add (i, sumOfValsOverAvg / (nSeasons |> float)) printfn "Seasons Averageß: \n %A" seasonals seasonals initialAeasonalComponents series 12 个文件夹中的所有文件。

您只能生成一个文件par git repo才能备份该文件:请参阅git bundle
我描述了it here,它可以生成full or incremental backup(有关增量示例,请参阅我的backup script