Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 是否将文件系统写入记录为远程应用程序的二进制差异?_Linux_Diff_Large Files_Filesystemwatcher_Interbase - Fatal编程技术网

Linux 是否将文件系统写入记录为远程应用程序的二进制差异?

Linux 是否将文件系统写入记录为远程应用程序的二进制差异?,linux,diff,large-files,filesystemwatcher,interbase,Linux,Diff,Large Files,Filesystemwatcher,Interbase,我正在使用不断更新的~20GB数据库间备份,我希望通过internet进行复制。如何最大限度地减少数据传输 我曾考虑使用二进制diff工具,但我知道bsdiff至少需要0(7n)内存,而且这些数据库间备份只是使用Interbase专有的gbak在LAN上进行增量更改。是否有任何方法可以连接到linux文件系统(ext/btrfs/…)以捕获对此文件所做的所有更改,将其导出为通用的diff格式,并在不同的(windows)平台上重新组装?您可能可以使用rsync。如果数据库中的更改恰好被保存到备份

我正在使用不断更新的~20GB数据库间备份,我希望通过internet进行复制。如何最大限度地减少数据传输


我曾考虑使用二进制diff工具,但我知道
bsdiff
至少需要0(7n)内存,而且这些数据库间备份只是使用Interbase专有的
gbak
在LAN上进行增量更改。是否有任何方法可以连接到linux文件系统(ext/btrfs/…)以捕获对此文件所做的所有更改,将其导出为通用的diff格式,并在不同的(windows)平台上重新组装?

您可能可以使用
rsync
。如果数据库中的更改恰好被保存到备份文件的末尾,这将是完美的

但是,如果备份文件被高度重写(我的意思是随机插入/删除/修改许多小数据块/行),
rsync
将无法完成这项工作。这取决于同步的频率与数据库中插入/删除的频率

有一些工具,如
xdelta
,在这种情况下可能会有所帮助,因为它们使用窗口方法进行增量计算,并且可能能够找到比
rsync
小得多的公共部分,从而保留公共部分,尽管存在更高密度的更改。您需要一个“旧”和最新的备份才能使用此功能


好消息是,每次执行备份时,备份的组织方式可能相同(表/行顺序相同),这将有助于两种算法。

数据库间增量备份功能如何?您可以尝试将增量备份(针对日志文件)到临时转储位置,然后将增量数据单独备份到异地位置。无论如何,您可能需要保留初始完整备份数据,才能继续进行InterBase数据库的增量备份


它将为您提供所需备份的少量数据。

谢谢
xdelta
看起来更合适一点,但它仍然是bsdiff风格,我必须计算一个差异,尽管操作系统已经知道正在发生哪些增量更改-因为它们正在写入文件,或者是通过有线格式。我不是gbak的专家,它是否完全重写了备份文件?还是只附加数据?如果您使用Firebird,您可以尝试使用
nbackup
进行增量备份(注意不支持多文件备份)。这可能是最好的方法,尽可能使用interbase增量备份。谢谢