您现在的位置是:首页 > 综合聚焦 > 服务器 > Linux > Linux

在Linux上,有什么比`find`或`diff -r`更快的方式来查看目录中的某些内容是否已经改变?

编辑:站长来源:互联网作者: 佚名2020-07-03Linux

简介我使用tar在我的服务器上创建文件系统不同部分的快照,然后将该快照ftp到非现场位置进行存档. 我想只在事情发生变化时才开始这项行动.某些备份在所有系统的文件夹上运行,这些文件夹很少发生变化(即安装新软件或修改配置时). 每当发生变化时,我都想要一个完整的

我使用tar在我的服务器上创建文件系统不同部分的快照,然后将该快照ftp到非现场位置进行存档.

我想只在事情发生变化时才开始这项行动.某些备份在所有系统的文件夹上运行,这些文件夹很少发生变化(即安装新软件或修改配置时).

每当发生变化时,我都想要一个完整的快照.我可以用find生成一个修改过的文件列表,但我真的只需要知道该列表的长度是0还是更大.使用find太慢了.

我知道有增量备份,我已经在其他情况下将rsync与ZFS结合使用了.但是,这里备份主机是FTP服务器(所以没有rsync),我需要完整的备份(因为备份存档用作恢复或克隆服务器的映像),我想要压缩输出(所以tar很方便).

编辑:请注意,我不是在寻找增量备份(我有这个),而是寻找快速(有点排除查找等)以及确定完整快照是否与最后一个相同的简单方法.也许我的措辞不太好.我现在编辑了这个标题.

解决方法

最近版本的GNU find有“-quit”动作,导致find立即停止搜索:

— Action: -quit

Exit immediately (with return value zero if no errors have occurred). This is different to ‘-prune’ because ‘-prune’ only applies to the contents of pruned directories,whilt ‘-quit’ simply makes find stop immediately. No child processes will be left running,but no more files specified on the command line will be processed. For example,find /tmp/foo /tmp/bar -print -quit will print only ‘/tmp/foo’. Any command lines which have been built by ‘-exec … +’ or ‘-execdir … +’ are invoked before the program is exited.

您可以使用find-expression查找已更改的文件,并在找到后立即使用-quit停止.这应该比继续扫描更快.

在Fileutils V4.2.3中添加了-quit

很赞哦! ()

本栏推荐

结合R awk bash命令结合R awk bash命令