如何仅将更改的字节复制到另一个文件? C#

问题描述 投票:0回答:1

如何仅将更改的字节从文件A复制到文件B?

我看到许多备份软件都具有此功能,但是我找不到有关如何执行此操作的任何信息。

假设我有一个500 Mb的文件,并有一个副本。如果我更改原始文件,则只想将更改的字节同步到克隆的文件。

c# file io copy backup
1个回答
0
投票

这根本不是一件容易的事,这就是备份软件存在的原因。

最简单的情况是某个字节的值可以像这样改变:

文件:00 01 02 03 04

备份:00 01 99 03 04

[您可以很容易地发现第3个字节从02更改为99,如果文件中的更改完全一样,您可以简单地迭代两个文件的字节,只要看到任何字节的更改,您将其值更改为备份的值。

棘手(也是最不幸的是,最常见的情况)是字节可能被值[[和位置修改了。例如。如果您在文件的开头添加新的字节]

文件:77 00 01 02 03 04

备份:00 01 02 03 04

尽管表面上似乎只修改了一个字节,但从字节间比较的角度来看,我们看到的好像是

ALL

字节已更改。因此,我们需要有一个特殊的算法(实际上是Stack Overflow无法解决的),该算法能够匹配文件的更改部分,而不管这些部分的更改位置。
© www.soinside.com 2019 - 2024. All rights reserved.