![]() |
1
1
如上所述
但是,也可以指定一个变量
第二,尽管您有一个文件大小检查
这里是您的最终代码。
|
![]() |
2
2
你可以使用
Google's Diff Match Patch
(您可以安装它
|
![]() |
3
1
您需要将更改保存到某个地方,或者在文件内容更改时侦听事件。对于后者,您可以使用
如果您决定真正喜欢cron而不是增量检查更改(看门狗),那么您需要将更改存储在一些数据库中。一些基本的例子是:
然后检查
如果没有
编辑: 实际上:d如果文件在同一台机器上,您甚至可能不需要数据库…这样,您就可以直接在新文件和旧文件之间进行diff+修补。 例子:
在巨蟒中
|
![]() |
4
1
一种方法是将单行保存到文件中,以跟踪最近的时间(借助
注意:可以优化以下代码段。
方法是,创建一个文件,其中包含系统修改的最新文件的时间戳。 检索所有文件并按修改时间排序
最初,在
我只是复制所有给定的文件并将这个时间戳写入
否则,文件就存在了(即以前复制过文件),我只需读取时间戳并将其与我读取的文件列表进行比较。
实际上,跟踪最新修改的文件的时间戳还可以让您复制已经复制的文件。 当它们被改变时 :) |
![]() |
5
1
这方面有一些非常有趣的想法,但我会尝试提出一些新的想法。 想法1:追踪更新的更好方法根据您的问题,很明显您正在使用cron作业来跟踪更新的文件。 如果您试图监视的文件/目录数量相对较少,我建议使用另一种方法来简化您的生活。 你可以使用Linux 使化 一种机制,允许您监视特定的文件/目录,并在文件写入时得到通知。 赞成 :您可以立即知道每一次写入,而无需检查更改。当然,您可以编写一个处理程序,它不会每次写入都更新目标,只会在X分钟内更新一个。
下面是一个使用
想法2:只复制更改如果你决定使用 使化 机制,跟踪您的状态是很简单的。 然后,有两种可能性: 1。总是追加新内容 如果是这种情况,您可以简单地从最后一个偏移量复制任何内容,直到文件结束。 2。新内容在随机位置写入 在这种情况下,我建议使用其他答案提出的方法:使用diff补丁。在我看来,这是迄今为止最优雅的解决方案。 以下是一些选项: |
![]() |
6
1
其中一个好处是
有过多的
至于检查是否需要进行同步,您可以使用
|
![]() |
7
-2
您必须集成一个数据库,并且可以根据文件的大小、名称和作者来记录文件。 如果有任何更新,文件的大小将发生变化,您可以相应地更新或追加。 |