Delphi:自己的文件'备份

时间:2011-07-16 00:47:26

标签: delphi copy backup

有一个文件夹 - 带有大量二进制文件的7 Gb。二进制文件的平均大小约为100 Kb。这些文件在ZIP存档中压缩。 ZIP存档的平均大小约为2 Mb。因此,我需要备份ZIP存档。

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

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

请告诉我如何在Delphi中执行此操作或告诉您的建议。

谢谢!

2 个答案:

答案 0 :(得分: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的文件版本控制部分的版本之间存储差异。

答案 1 :(得分:2)

您可以找到许多组件来帮助您压缩/解压缩文件或文件夹herehere