每隔一段时间我都会备份我的硬盘部分。我不想以这种方式讨论我这样做的原因。我想要讨论的是复制.git
目录时备份速度特别慢。即使是简单的项目,这个.git
目录中也有~5000个文件!我正在运行这些项目的多个。它们一起只有约60 mb左右。 git目录有更多的文件,然后我的项目呢!这对复制来说效率很低。复制效率非常低:我认为所有这些.git
目录都会丢失90%的时间。
有没有办法设置git有效地将所有内容整合到一个大文件中?或者可能是10到50.但不是5000。
答案 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)