2011-07-16 37 views
-3

有一个文件夹 - 7 Gb与大量的二进制文件。二进制文件的平均大小约为100 Kb。这些文件在ZIP压缩文件中被压缩。该ZIP压缩文件的平均大小约为2 Mb。因此我需要对ZIP存档进行备份。德尔福:自己的文件'备份

而我需要做整个文件夹的备份。它可以没有数据压缩。主要要求是快速备份。因此,必须有可能从备份中恢复文件。

例如,可以使用没有数据压缩的存档,但是添加和提取文件必须快速。或者可以使用快速复制。

请告诉我如何在Delphi中做到这一点或告诉你的建议。

谢谢!

+2

为什么你需要这样做?有一百万种工具可以做到这一点。 – Jacob

+0

@cularis,我在问Delphi。我知道“有一百万种工具可以做到这一点。“ @”更接近“,问题很清楚 – maxfax

+1

这个问题还不是很清楚,备份是一个大而模糊的话题,你没有详细说明你的约束和要求,你也没有解释是否你的产品是一个专用的备份工具,或者它是否有备份设施以及其他功能 –

回答

4

数据是怎样被布局的7GB?多少个文件?哪种文件(DB,图片,文本,docx,doc)?什么是平均/较小/较大的文件大小?文件如何变化:添加新文件,文件完全更改,某些字节更改/附加到某些现有文件?

这些都是有意义的信息,拿起备份的正确方法...

举例来说,如果你的文件不小,只是复制到另一个文件夹就会使绝招(你可以找到一些算法directory-level diffs in this unit )。

对于一个zip压缩文件,7 GB是巨大的。当然,你可以在这样的大小下处理zip,但恕我直言,它不是用于增量备份的正确格式。

zip格式的一个问题是,要更新一个文件,必须删除以前的版本,因此整个zip内容必须被重写......最多只能移动文件内容。

因此,如果您想要定期刷新备份(例如每天),则常规归档格式不是最佳候选。

我建议使用一些平面文件格式,比如我们的开放源代码Synopse Big Table,并存储简单的内容,一个压缩版本(不要使用zip/deflate格式,这很慢,但比如我们的SynLZ algorithm,它比任何其他的快 - 比LZO更快 - 用于压缩)。如果压缩速度快于磁盘访问速度,则备份速度会更快:zip/deflate比用于压缩的磁盘访问慢,但SynLZ速度更快,所以您可以通过SynLZ压缩内容来节省时间。

使用Big Table,您可以使用内存中的元数据获取文件属性(名称,版本,日期,属性,以前的版本ID ...),然后让压缩的内容放在磁盘上。

如果文件很大,并且只有一些字节会改变,可以考虑使用二进制比较而不是每次写入整个内容,以仅存储主要版本之间的差异。这是非常快的one unit,我们用它来存储our SynProject tool文件版本控制部分的版本之间的差异。

+0

为什么要谈论增量备份?这与将档案加入档案不同。 –

+0

@David因为我们不知道准备保存在备份中的文件布局,所以我试图找到所有可能性,包括增量备份。 –

+0

@ A.Bouchez,我指定了文件格式。请参阅 – maxfax

2

你可以找到许多部件,这将帮助你压缩/解压缩的文件或文件夹herehere

+0

谢谢!您是否建议使用常规归档器? – maxfax

+0

@maxfax我不推荐使用定期归档器进行定期备份 –