【问题标题】:Is there any way in Linux to check if directory tree has changed?Linux中是否有任何方法可以检查目录树是否已更改?
【发布时间】:2021-01-18 01:51:53
【问题描述】:

我正在创建一个 QEMU 启动脚本,每次启动 env 时,我都会在其中将 rootfs 编译为 cpio.gz。目前这很好,但是当 rootfs 的大小变大时,这将是一个问题。有什么方法可以检查给定的目录结构和编译的 xxx.cpio.gz 是否不同?我的意思是,如果将一个文件添加到基本 rootfs 目录结构中,则必须创建一个新的 cpio.gz,但如果不是这种情况,则在之前的启动中编译的那个就可以了。

提前致谢。

【问题讨论】:

    标签: linux directory rootfs cpio


    【解决方案1】:

    您可以在 rootfs 目录和 cpio.gz 之间使用 diff 来查找仅存在于 rootfs 目录中的文件。

    例如,给定以下目录ab

    a:
    total 16
    drwxr-xr-x  2 spiderpig spiderpig  4096 Oct  2 14:43 .
    drwxr-xr-x 24 spiderpig spiderpig 12288 Oct  2 14:43 ..
    -rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 in_both_dirs
    -rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 only_in_a
    
    b:
    total 16
    drwxr-xr-x  2 spiderpig spiderpig  4096 Oct  2 14:43 .
    drwxr-xr-x 24 spiderpig spiderpig 12288 Oct  2 14:43 ..
    -rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 in_both_dirs
    -rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 only_in_b
    

    输出将是:

    spiderpig@linux-dev ~ $ diff --brief a b
    Only in a: only_in_a
    Only in b: only_in_b
    

    然后您可以知道要复制哪些文件,而不是复制整个目录。注意diff有很多选项,所以在使用之前一定要运行diff --help

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2018-08-05
      • 2020-05-10
      • 2023-03-25
      相关资源
      最近更新 更多